Submission #12791
ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | #include<bits/stdc++.h> using namespace std; #define int long long typedef vector< int >vint; typedef pair< int , int >pint; typedef vector<pint>vpint; #define rep(i,n) for(int i=0;i<(n);i++) #define reps(i,f,n) for(int i=(f);i<(n);i++) #define all(v) (v).begin(),(v).end() #define each(it,v) for(__typeof((v).begin()) it=(v).begin();it!=(v).end();it++) #define pb push_back #define fi first #define se second template < typename A, typename B> inline void chmin(A &a,B b){ if (a>b)a=b;} template < typename A, typename B> inline void chmax(A &a,B b){ if (a<b)a=b;} typedef tuple< int , int , int , int >latte; int N,M,X; int T[10000]; const int INF=1001001001001001001ll; int dist[10000][201][2]; vpint G[10000]; signed main(){ scanf ( "%lld%lld%lld" ,&N,&M,&X); rep(i,N){ scanf ( "%lld" ,&T[i]); if (T[i]==1)T[i]=2; else if (T[i]==2)T[i]=1; } rep(i,M){ int a,b,c; scanf ( "%lld%lld%lld" ,&a,&b,&c); a--;b--; G[a].pb({b,c}); G[b].pb({a,c}); } fill_n(**dist,10000*201*2,INF); priority_queue<latte,vector<latte>,greater<latte>>que; que.push(make_tuple(0,0,0,0)); dist[0][0][0]=0; while (que.size()){ int d,v,x,t; tie(d,v,x,t)=que.top(); que.pop(); if (dist[v][x][t]<d) continue ; if (v==N-1){ cout<<d<<endl; return 0; } for (auto &e:G[v]){ if (T[e.fi]==2){ int nx=min(X,x+e.se); if (dist[e.fi][nx][t]<=d+e.se) continue ; dist[e.fi][nx][t]=d+e.se; que.push(make_tuple(dist[e.fi][nx][t],e.fi,nx,t)); } else { if (T[e.fi]!=t&&x+e.se<X) continue ; if (dist[e.fi][0][T[e.fi]]<=d+e.se) continue ; dist[e.fi][0][T[e.fi]]=d+e.se; que.push(make_tuple(dist[e.fi][0][T[e.fi]],e.fi,0,T[e.fi])); } } } return 0; } |
ステータス
項目 | データ |
---|---|
問題 | 0597 - ヘビの JOI 君 (Snake JOI) |
ユーザー名 | latte0119 |
投稿日時 | 2017-02-05 23:58:42 |
言語 | C++11 |
状態 | Accepted |
得点 | 1 |
ソースコード長 | 2015 Byte |
最大実行時間 | 65 ms |
最大メモリ使用量 | 34816 KB |
セット
セット | 得点 | Cases | |
---|---|---|---|
1 | set1 | 20 / 20 | *t6*1.txt |
2 | set2 | 0 / 20 | *t6*2.txt |
3 | set3 | 0 / 20 | *t6*3.txt |
4 | set4 | 0 / 20 | *t6*4.txt |
5 | set5 | 0 / 20 | *t6*5.txt |
テストケース
ファイル名 | 状態 | 実行時間 | メモリ使用量 | # | ||||
---|---|---|---|---|---|---|---|---|
2017-yo-t6-in1.txt | AC | 65 ms | 33500 KB |
1
|
||||
2017-yo-t6-in2.txt | AC | 29 ms | 33696 KB |
2
|
||||
2017-yo-t6-in3.txt | AC | 35 ms | 34068 KB |
3
|
||||
2017-yo-t6-in4.txt | AC | 36 ms | 34504 KB |
4
|
||||
2017-yo-t6-in5.txt | AC | 39 ms | 34816 KB |
5
|