結果
| 問題 |
No.1 道のショートカット
|
| コンテスト | |
| ユーザー |
kyuridenamida
|
| 提出日時 | 2016-02-10 18:44:57 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 754 bytes |
| コンパイル時間 | 1,858 ms |
| コンパイル使用メモリ | 164,676 KB |
| 実行使用メモリ | 6,948 KB |
| 最終ジャッジ日時 | 2024-07-08 04:22:26 |
| 合計ジャッジ時間 | 2,961 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 9 WA * 31 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
struct NODE{
int x,c,t;
};
bool operator < (const NODE &a,const NODE &b){
return a.t > b.t;
}
int done[55][310];
int S[50],T[50],Y[50],M[50];
int main(){
int N,C,V;
cin >> N >> C >> V;
for(int i = 0 ; i < V ; i++) cin >> S[i],S[i]--;
for(int i = 0 ; i < V ; i++) cin >> T[i],T[i]--;
for(int i = 0 ; i < V ; i++) cin >> Y[i];
for(int i = 0 ; i < V ; i++) cin >> M[i];
priority_queue<NODE> Q;
Q.push({0,0,0});
while( Q.size() ){
auto q = Q.top(); Q.pop();
if( q.c > C ) continue;
if( done[q.x][q.c]++ ) continue;
if( q.x == N - 1 ){
cout << q.t << endl;
return 0;
}
for(int i = 0 ; i < V ; i++)
if( S[i] == q.x ) Q.push({T[i],q.c+Y[i],q.t+M[i]});
}
cout << -1 << endl;
}
kyuridenamida