結果
| 問題 |
No.1 道のショートカット
|
| コンテスト | |
| ユーザー |
fiord
|
| 提出日時 | 2015-05-18 23:25:11 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 902 bytes |
| コンパイル時間 | 732 ms |
| コンパイル使用メモリ | 60,492 KB |
| 実行使用メモリ | 6,948 KB |
| 最終ジャッジ日時 | 2024-07-08 04:01:13 |
| 合計ジャッジ時間 | 1,877 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 WA * 1 |
| other | AC * 16 WA * 24 |
ソースコード
#include <iostream>
#include <utility>
#include <algorithm>
using namespace std;
#define rep(i,n) for(int i=0;i<n;i++)
#define INF 1<<25
int main(){
int n,c,v; cin>>n>>c>>v;
int s[v],t[v],y[v],m[v];
rep(i,v){
cin>>s[i]; s[i]--;
}
rep(i,v){
cin>>t[i]; t[i]--;
}
rep(i,v) cin>>y[i];
rep(i,v) cin>>m[i];
pair<int,int> map[n][n];
rep(i,n){
rep(j,n){
map[i][j].first=INF;
map[i][j].second=INF;
}
}
rep(i,v){
map[s[i]][t[i]].first=y[i];
map[s[i]][t[i]].second=m[i];
}
int dp[n][c+1];
rep(i,n){
rep(j,c+1) dp[i][j]=INF;
}
dp[0][c]=0;
rep(i,n){
rep(j,c+1){
if(dp[i][j]==INF) continue;
rep(k,n){
if(map[i][k].first==INF) continue;
int mon=j-map[i][k].first;
if(mon<0) continue;
dp[k][mon]=min(dp[k][mon],dp[i][j]+map[i][k].second);
}
}
}
int ans=INF;
rep(i,c+1) ans=min(ans,dp[n-1][i]);
if(ans==INF) ans=-1;
cout<<ans<<endl;
return 0;
}
fiord