結果
問題 |
No.1 道のショートカット
|
ユーザー |
![]() |
提出日時 | 2014-12-23 18:38:52 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,756 bytes |
コンパイル時間 | 514 ms |
コンパイル使用メモリ | 69,456 KB |
実行使用メモリ | 13,880 KB |
最終ジャッジ日時 | 2024-07-08 03:39:01 |
合計ジャッジ時間 | 7,151 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 WA * 1 |
other | AC * 6 WA * 1 TLE * 1 -- * 32 |
ソースコード
#include <iostream> #include <stack> #include <string> #include <vector> #include <queue> #include <algorithm> #include <stdlib.h> #include <math.h> #include <stdio.h> int max(int a,int b){ if(a>=b)return a; else return b; } void swap(int *a,int *b){ int tmp = *a; *a = *b; *b = tmp; } void babbleSort(int *data,int n){ for(int i=0;i<n;i++){ for(int j=n-1;j>i;j--){ if(data[j]>=data[j-1]){ swap(&data[j],&data[j-1]); } } } } using namespace std; /* cin.ignore(); getline(cin,dataStr); data = new int[n]; stringToInteger(&dataStr,data,n); */ void stringToInteger(string *str,int *data,int n){ for(int i=0;i<n;i++){ int spaceN = str->find(' ',0); data[i] = atoi(str->substr(0,spaceN).c_str()); str->erase(0,spaceN+1); } } int data[1500][1500][2];//data[i][j][k] i:iから jに向かう時の k:0コスト 1: 時間 int min1; void solve(int *s,int *t,int c,int n,int v,int now,int time1){ if(c<0)return; if(now==n){ if(min1>=time1){ min1=time1; } } else if(now>n)return; else{ for(int i=0;i<v;i++){ if(s[i]==now){ solve(s,t,c-data[s[i]][t[i]][0],n,v,t[i],time1+data[s[i]][t[i]][1]); } } } } int main(){ int n,c,v; cin>>n; cin>>c; cin>>v; min1=10000000; int *s,*t,*y,*m; s = new int[v]; t = new int[v]; y = new int[v]; m = new int[v]; string str; cin.ignore(); getline(cin,str); stringToInteger(&str,s,v); getline(cin,str); stringToInteger(&str,t,v); getline(cin,str); stringToInteger(&str,y,v); getline(cin,str); stringToInteger(&str,m,v); vector<int> *p; p = new vector<int> [v]; for(int i=0;i<v;i++){ data[s[i]][t[i]][0]=y[i]; data[s[i]][t[i]][1]=m[i]; } solve(s,t,c,n,v,1,0); if(min1==10000000){ cout<<-1<<endl; } else{ cout<<min1<<endl; } }