Submission #4631522


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] >= MOD) ? -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 6808 Byte
Status WA
Exec Time 95 ms
Memory 14720 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 3456 KB
02.txt AC 50 ms 12032 KB
03.txt AC 95 ms 14464 KB
04.txt AC 86 ms 13824 KB
05.txt AC 93 ms 14592 KB
06.txt AC 38 ms 8064 KB
07.txt AC 46 ms 9472 KB
08.txt AC 94 ms 14720 KB
09.txt AC 48 ms 9600 KB
10.txt AC 47 ms 9600 KB
11.txt AC 65 ms 13048 KB
12.txt AC 44 ms 11380 KB
13.txt AC 58 ms 11892 KB
14.txt AC 71 ms 13184 KB
15.txt AC 63 ms 12920 KB
16.txt WA 69 ms 13180 KB
17.txt WA 67 ms 12916 KB
18.txt AC 53 ms 11896 KB
19.txt AC 67 ms 13168 KB
20.txt AC 69 ms 13184 KB
21.txt AC 69 ms 12920 KB
22.txt WA 66 ms 12660 KB
23.txt AC 74 ms 13568 KB
24.txt AC 66 ms 12280 KB
25.txt AC 42 ms 11380 KB
26.txt AC 57 ms 12020 KB
27.txt AC 66 ms 11904 KB
28.txt AC 66 ms 12408 KB
29.txt AC 67 ms 12284 KB
30.txt AC 66 ms 12532 KB
31.txt AC 52 ms 11896 KB
32.txt AC 63 ms 13040 KB
33.txt AC 70 ms 12544 KB
34.txt WA 65 ms 13176 KB
35.txt AC 42 ms 11252 KB
36.txt AC 57 ms 12020 KB
37.txt WA 65 ms 13184 KB
38.txt WA 66 ms 13176 KB
sample_01.txt AC 2 ms 3456 KB
sample_02.txt AC 2 ms 3456 KB
sample_03.txt AC 3 ms 3328 KB
w1.txt AC 70 ms 13264 KB
w10.txt AC 73 ms 13696 KB
w11.txt AC 45 ms 10396 KB
w12.txt AC 47 ms 11264 KB
w13.txt WA 55 ms 12160 KB
w14.txt AC 70 ms 13696 KB
w15.txt AC 45 ms 10236 KB
w16.txt AC 48 ms 11264 KB
w17.txt AC 56 ms 12160 KB
w18.txt WA 71 ms 13696 KB
w2.txt AC 71 ms 13264 KB
w3.txt AC 89 ms 14064 KB
w4.txt AC 80 ms 13808 KB
w5.txt AC 86 ms 13808 KB
w6.txt AC 83 ms 13936 KB
w7.txt WA 49 ms 9948 KB
w8.txt WA 51 ms 11136 KB
w9.txt WA 59 ms 12160 KB