結果
問題 | No.1 道のショートカット |
ユーザー | sewoiwataki |
提出日時 | 2018-02-19 01:41:21 |
言語 | C++11 (gcc 11.4.0) |
結果 |
AC
|
実行時間 | 310 ms / 5,000 ms |
コード長 | 2,439 bytes |
コンパイル時間 | 581 ms |
コンパイル使用メモリ | 67,880 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-07-20 16:34:53 |
合計ジャッジ時間 | 2,827 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
5,248 KB |
testcase_01 | AC | 2 ms
5,376 KB |
testcase_02 | AC | 2 ms
5,376 KB |
testcase_03 | AC | 1 ms
5,376 KB |
testcase_04 | AC | 1 ms
5,376 KB |
testcase_05 | AC | 2 ms
5,376 KB |
testcase_06 | AC | 2 ms
5,376 KB |
testcase_07 | AC | 2 ms
5,376 KB |
testcase_08 | AC | 19 ms
5,376 KB |
testcase_09 | AC | 4 ms
5,376 KB |
testcase_10 | AC | 7 ms
5,376 KB |
testcase_11 | AC | 26 ms
5,376 KB |
testcase_12 | AC | 114 ms
5,376 KB |
testcase_13 | AC | 112 ms
5,376 KB |
testcase_14 | AC | 2 ms
5,376 KB |
testcase_15 | AC | 1 ms
5,376 KB |
testcase_16 | AC | 2 ms
5,376 KB |
testcase_17 | AC | 2 ms
5,376 KB |
testcase_18 | AC | 2 ms
5,376 KB |
testcase_19 | AC | 2 ms
5,376 KB |
testcase_20 | AC | 5 ms
5,376 KB |
testcase_21 | AC | 2 ms
5,376 KB |
testcase_22 | AC | 2 ms
5,376 KB |
testcase_23 | AC | 193 ms
5,376 KB |
testcase_24 | AC | 310 ms
5,376 KB |
testcase_25 | AC | 21 ms
5,376 KB |
testcase_26 | AC | 10 ms
5,376 KB |
testcase_27 | AC | 108 ms
5,376 KB |
testcase_28 | AC | 2 ms
5,376 KB |
testcase_29 | AC | 8 ms
5,376 KB |
testcase_30 | AC | 3 ms
5,376 KB |
testcase_31 | AC | 8 ms
5,376 KB |
testcase_32 | AC | 32 ms
5,376 KB |
testcase_33 | AC | 13 ms
5,376 KB |
testcase_34 | AC | 150 ms
5,376 KB |
testcase_35 | AC | 3 ms
5,376 KB |
testcase_36 | AC | 4 ms
5,376 KB |
testcase_37 | AC | 3 ms
5,376 KB |
testcase_38 | AC | 2 ms
5,376 KB |
testcase_39 | AC | 2 ms
5,376 KB |
testcase_40 | AC | 2 ms
5,376 KB |
testcase_41 | AC | 2 ms
5,376 KB |
testcase_42 | AC | 1 ms
5,376 KB |
testcase_43 | AC | 2 ms
5,376 KB |
ソースコード
#include <iostream> #include <vector> #include <queue> //#define DEBUG #define NMAX 50 #define CMAX 300 #define VMAX 1500 typedef struct ed{ int T; int Y; int M; } ED; using namespace std; int main(){ int N; int C; int V; int S[VMAX]; int T[VMAX]; int Y[VMAX]; int M[VMAX]; int ans; queue<int> q; vector<ED> v[NMAX+1]; int map[NMAX+1][CMAX+1]; cin>>N; cin>>C; cin>>V; for(int i=0;i<V;i++){ cin>>S[i]; } for(int i=0;i<V;i++){ cin>>T[i]; } for(int i=0;i<V;i++){ cin>>Y[i]; } for(int i=0;i<V;i++){ cin>>M[i]; } for(int i=0;i<V;i++){ ED tmpS; tmpS.T=T[i]; tmpS.Y=Y[i]; tmpS.M=M[i]; v[S[i]].push_back(tmpS); } #ifdef DEBUG for(int i=1;i<=N;i++){ cout<<i<<":"<<endl; for(int j=0;j<v[i].size();j++){ cout<<"T:"<<v[i][j].T<<" Y:"<<v[i][j].Y<<" M:"<<v[i][j].M<<endl; } } #endif for(int i=1;i<=N;i++){ for(int j=0;j<=C;j++){ map[i][j]=-1; } } map[1][C]=0; q.push(1); while(!q.empty()){ #ifdef DEBUG for(int i=1;i<=N;i++){ int min=-1; for(int j=0;j<=C;j++){ if(map[i][j]!=-1){ if(min==-1||min>map[i][j]){ min=map[i][j]; } } } cout<<min<<","; } cout<<endl; #endif int n=q.front(); q.pop(); for(int i=0;i<v[n].size();i++){ for(int j=0;j<=C;j++){ int diffC=j-v[n][i].Y; if(map[n][j]!=-1&&diffC>=0){ int toM=map[v[n][i].T][diffC]; if(toM==-1||map[n][j]+v[n][i].M<toM){ #ifdef DEBUG cout<<"n:"<<n<<" i:"<<i<<" j:"<<j<<endl; #endif map[v[n][i].T][diffC]=map[n][j]+v[n][i].M; q.push(v[n][i].T); } } } } } ans=-1; for(int i=0;i<=C;i++){ if(map[N][i]!=-1){ if(ans==-1||ans>map[N][i]){ ans=map[N][i]; } } } cout<<ans<<endl; }