Submission #4631509


Source Code Expand

#include <bits/stdc++.h>
using namespace std;
//#define int long long
//TEMPLATE START---------------8<---------------8<---------------8<---------------8<---------------//
typedef long long ll;       typedef long double ld;  typedef pair<int,int> pii; typedef pair<ll,ll> pll;  typedef vector<int> vi;   typedef vector<ll> vl;
typedef vector<string> vst; typedef vector<bool> vb; typedef vector<ld> vld;    typedef vector<pii> vpii; typedef vector<pll> vpll; typedef vector<vector<int> > vvi;
const int INF = (0x7FFFFFFFL); const ll INFF = (0x7FFFFFFFFFFFFFFFL); const string ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
const int MOD = 1e9 + 7;       const int MODD = 998244353;            const string alphabet = "abcdefghijklmnopqrstuvwxyz";
const double PI = acos(-1.0);  const double EPS = 1e-9;               const string Alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
int dx[9] = { 1, 0, -1,  0,  1, -1, -1, 1, 0 };
int dy[9] = { 0, 1,  0, -1, -1, -1,  1, 1, 0 };
#define ln '\n'
#define scnaf scanf
#define sacnf scanf
#define sancf scanf
#define SS(type, ...)type __VA_ARGS__;MACRO_VAR_Scan(__VA_ARGS__);
template<typename T> void MACRO_VAR_Scan(T& t){cin >> t;}template<typename First, typename...Rest> void MACRO_VAR_Scan(First& first, Rest&...rest){cin >> first;MACRO_VAR_Scan(rest...);}
#define SV(type,c,n) vector<type> c(n);for(auto& i:c)cin >> i;
#define SVV(type,c,n,m) vector<vector<type>> c(n,vector<type>(m));for(auto& r:c)for(auto& i:r)cin >> i;
template<class T,class U>ostream &operator<<(ostream &o,const pair<T,U>&j){o<<"{"<<j.first<<", "<<j.second<<"}";return o;}
template<class T,class U>ostream &operator<<(ostream &o,const map<T,U>&j){o<<"{";for(auto t=j.begin();t!=j.end();++t)o<<(t!=j.begin()?", ":"")<<*t;o<<"}";return o;}
template<class T>ostream &operator<<(ostream &o,const set<T>&j){o<<"{";for(auto t=j.begin();t!=j.end();++t)o<<(t!=j.begin()?", ":"")<<*t;o<<"}";return o;}
template<class T>ostream &operator<<(ostream &o,const vector<T>&j){o<<"{";for(int i=0;i<(int)j.size();++i)o<<(i>0?", ":"")<<j[i];o<<"}";return o;}
inline int print(void){cout << endl; return 0;}
template<class Head> int print(Head&& head){cout << head;print();return 0;} template<class Head,class... Tail> int print(Head&& head,Tail&&... tail){cout<<head<<" ";print(forward<Tail>(tail)...);return 0;}
inline int debug(void){cerr << endl; return 0;}
template<class Head> int debug(Head&& head){cerr << head;debug();return 0;} template<class Head,class... Tail> int debug(Head&& head,Tail&&... tail){cerr<<head<<" ";debug(forward<Tail>(tail)...);return 0;}
template<typename T> void PA(T &a){int ASIZE=sizeof(a)/sizeof(a[0]);for(int ii=0;ii<ASIZE;++ii){cout<<a[ii]<<" \n"[ii==ASIZE-1];}}
template<typename T> void PV(T &v){int VSIZE=v.size();for(int ii=0;ii<VSIZE;++ii){cout<<v[ii]<<" \n"[ii==VSIZE-1];}}
#define ER(x)  cerr << #x << " = " << (x) << endl;
#define ERV(v) {cerr << #v << " : ";for(const auto& xxx : v){cerr << xxx << " ";}cerr << "\n";}
inline int YES(bool x){cout<<((x)?"YES":"NO")<<endl;return 0;} inline int Yes(bool x){cout<<((x)?"Yes":"No")<<endl;return 0;}  inline int yes(bool x){cout<<((x)?"yes":"no")<<endl;return 0;}
inline int yES(bool x){cout<<((x)?"yES":"nO")<<endl;return 0;} inline int Yay(bool x){cout<<((x)?"Yay!":":(")<<endl;return 0;}
template<typename A,typename B> void sankou(bool x,A a,B b){cout<<((x)?(a):(b))<<endl;}
#define _overload3(_1,_2,_3,name,...) name
#define _REP(i,n) REPI(i,0,n)
#define REPI(i,a,b) for(ll i=ll(a);i<ll(b);++i)
#define REP(...) _overload3(__VA_ARGS__,REPI,_REP,)(__VA_ARGS__)
#define _RREP(i,n) RREPI(i,n,0)
#define RREPI(i,a,b) for(ll i=ll(a);i>=ll(b);--i)
#define RREP(...) _overload3(__VA_ARGS__,RREPI,_RREP,)(__VA_ARGS__)
#define EACH(e,v) for(auto& e : v)
#define PERM(v) sort((v).begin(),(v).end());for(bool c##p=1;c##p;c##p=next_permutation((v).begin(),(v).end()))
#define ADD(a,b) a=(a+ll(b))%MOD
#define MUL(a,b) a=(a*ll(b))%MOD
inline ll MOP(ll x,ll n,ll m=MOD){ll r=1;while(n>0){if(n&1)(r*=x)%=m;(x*=x)%=m;n>>=1;}return r;}
inline ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}inline ll lcm(ll a,ll b){return a*b/gcd(a,b);}inline ll POW(ll a,ll b){ll c=1ll;do{if(b&1)c*=1ll*a;a*=1ll*a;}while(b>>=1);return c;}
template<typename T,typename A,typename B> inline bool between(T x,A a,B b) {return ((a<=x)&&(x<b));}template<class T> inline T sqr(T x){return x*x;}
template<typename A,typename B> inline bool chmax(A &a,const B &b){if(a<b){a=b;return 1;}return 0;}
template<typename A,typename B> inline bool chmin(A &a,const B &b){if(a>b){a=b;return 1;}return 0;}
#define tmax(x,y,z) max((x),max((y),(z)))
#define tmin(x,y,z) min((x),min((y),(z)))
#define PB push_back
#define MP make_pair
#define MT make_tuple
#define all(v) (v).begin(),(v).end()
#define rall(v) (v).rbegin(),(v).rend()
#define SORT(v) sort((v).begin(),(v).end())
#define RSORT(v) sort((v).rbegin(),(v).rend())
#define EXIST(s,e) (find((s).begin(),(s).end(),(e))!=(s).end())
#define EXISTST(s,c) (((s).find(c))!=string::npos)
#define POSL(x,val) (lower_bound(x.begin(),x.end(),val)-x.begin())
#define POSU(x,val) (upper_bound(x.begin(),x.end(),val)-x.begin())
#define GEQ(x,val) (int)(x).size() - POSL((x),(val))
#define GREATER(x,val) (int)(x).size() - POSU((x),(val))
#define LEQ(x,val) POSU((x),(val))
#define LESS(x,val) POSL((x),(val))
#define SZV(a) int((a).size())
#define SZA(a) sizeof(a)/sizeof(a[0])
#define ZERO(a) memset(a,0,sizeof(a))
#define MINUS(a) memset(a,0xff,sizeof(a))
#define MEMINF(a) memset(a,0x3f,sizeof(a))
#define FILL(a,b) memset(a,b,sizeof(a))
#define UNIQUE(v) sort((v).begin(),(v).end());(v).erase(unique((v).begin(),(v).end()),(v).end())
struct abracadabra{
  abracadabra(){
    cin.tie(0); ios::sync_with_stdio(0);
    cout << fixed << setprecision(20);
    cerr << fixed << setprecision(5);
  };
} ABRACADABRA;

//TEMPLATE END---------------8<---------------8<---------------8<---------------8<---------------//

// 1-indexed
vpii coor[100100];
int dist[100100];

signed main() {

  SS(int, N, M);

  REP(i, M) {
    SS(int, P, Q, C);
    coor[P].PB(MP(Q, C));
    coor[Q].PB(MP(P, C));
  }

  // {頂点, 会社}
  deque<pii> dq;
  dq.PB(MP(1, -1));

  MEMINF(dist);
  dist[1] = 0;

  while (!dq.empty()) {

    int sta, com;
    tie(sta, com) = dq.front();
    dq.pop_front();

    for (auto& nxt: coor[sta]) {
      int sta_n, com_n;
      tie(sta_n, com_n) = nxt;
      if (com == com_n) {
        if (chmin(dist[sta_n], dist[sta])) {
          dq.push_front(MP(sta_n, com_n));
        }
      } else {
        if (chmin(dist[sta_n], dist[sta] + 1)) {
          dq.push_back(MP(sta_n, com_n));
        }
      }
    }

  }

  cout << ((dist[N] >= 10000000) ? -1 : dist[N]) << endl;

}

Submission Info

Submission Time
Task E - Snuke's Subway Trip
User morio__
Language C++14 (GCC 5.4.1)
Score 0
Code Size 6685 Byte
Status WA
Exec Time 93 ms
Memory 9856 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 600
Status AC
AC × 48
WA × 11
Set Name Test Cases
Sample
All 01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, 25.txt, 26.txt, 27.txt, 28.txt, 29.txt, 30.txt, 31.txt, 32.txt, 33.txt, 34.txt, 35.txt, 36.txt, 37.txt, 38.txt, sample_01.txt, sample_02.txt, sample_03.txt, w1.txt, w10.txt, w11.txt, w12.txt, w13.txt, w14.txt, w15.txt, w16.txt, w17.txt, w18.txt, w2.txt, w3.txt, w4.txt, w5.txt, w6.txt, w7.txt, w8.txt, w9.txt
Case Name Status Exec Time Memory
01.txt AC 3 ms 3072 KB
02.txt AC 49 ms 7296 KB
03.txt AC 93 ms 9600 KB
04.txt AC 79 ms 9216 KB
05.txt AC 90 ms 9600 KB
06.txt AC 40 ms 6144 KB
07.txt AC 45 ms 6912 KB
08.txt AC 88 ms 9856 KB
09.txt AC 47 ms 7040 KB
10.txt AC 47 ms 7040 KB
11.txt AC 63 ms 8700 KB
12.txt AC 43 ms 7032 KB
13.txt AC 56 ms 7676 KB
14.txt AC 66 ms 8704 KB
15.txt AC 60 ms 8700 KB
16.txt WA 65 ms 8832 KB
17.txt WA 62 ms 8696 KB
18.txt AC 52 ms 7420 KB
19.txt AC 62 ms 8820 KB
20.txt AC 67 ms 8960 KB
21.txt AC 66 ms 8700 KB
22.txt WA 64 ms 8568 KB
23.txt AC 71 ms 8960 KB
24.txt AC 61 ms 8316 KB
25.txt AC 42 ms 7032 KB
26.txt AC 55 ms 7676 KB
27.txt AC 64 ms 8192 KB
28.txt AC 61 ms 8444 KB
29.txt AC 63 ms 8320 KB
30.txt AC 62 ms 8440 KB
31.txt AC 51 ms 7420 KB
32.txt AC 61 ms 8820 KB
33.txt AC 71 ms 8576 KB
34.txt WA 62 ms 8700 KB
35.txt AC 42 ms 7032 KB
36.txt AC 56 ms 7672 KB
37.txt WA 63 ms 8832 KB
38.txt WA 65 ms 8828 KB
sample_01.txt AC 3 ms 2944 KB
sample_02.txt AC 3 ms 2944 KB
sample_03.txt AC 3 ms 2944 KB
w1.txt AC 70 ms 8804 KB
w10.txt AC 72 ms 8448 KB
w11.txt AC 44 ms 6872 KB
w12.txt AC 47 ms 7040 KB
w13.txt WA 54 ms 7424 KB
w14.txt AC 69 ms 8448 KB
w15.txt AC 46 ms 7128 KB
w16.txt AC 48 ms 7040 KB
w17.txt AC 54 ms 7424 KB
w18.txt WA 70 ms 8448 KB
w2.txt AC 68 ms 8796 KB
w3.txt AC 80 ms 9588 KB
w4.txt AC 76 ms 9460 KB
w5.txt AC 84 ms 9588 KB
w6.txt AC 77 ms 9588 KB
w7.txt WA 48 ms 7128 KB
w8.txt WA 53 ms 6912 KB
w9.txt WA 58 ms 7424 KB