結果
| 問題 |
No.1 道のショートカット
|
| コンテスト | |
| ユーザー |
👑tozangezan
|
| 提出日時 | 2015-02-22 16:14:58 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 5 ms / 5,000 ms |
| コード長 | 1,260 bytes |
| コンパイル時間 | 878 ms |
| コンパイル使用メモリ | 49,604 KB |
| 実行使用メモリ | 5,376 KB |
| 最終ジャッジ日時 | 2024-07-20 16:10:18 |
| 合計ジャッジ時間 | 1,778 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 40 |
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:15:14: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
15 | scanf("%d%d%d",&a,&b,&c);
| ~~~~~^~~~~~~~~~~~~~~~~~~
main.cpp:16:34: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
16 | for(int i=0;i<c;i++)scanf("%d",s+i);
| ~~~~~^~~~~~~~~~
main.cpp:17:34: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
17 | for(int i=0;i<c;i++)scanf("%d",t+i);
| ~~~~~^~~~~~~~~~
main.cpp:18:34: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
18 | for(int i=0;i<c;i++)scanf("%d",y+i);
| ~~~~~^~~~~~~~~~
main.cpp:19:34: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
19 | for(int i=0;i<c;i++)scanf("%d",m+i);
| ~~~~~^~~~~~~~~~
ソースコード
#include<stdio.h>
#include<algorithm>
#include<vector>
#include<queue>
using namespace std;
int s[2100];
int t[2100];
int y[2100];
int m[2100];
vector<pair<int,pair<int,int> > > g[60];
int v[60][310];
int ijk[60][310];
int main(){
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
for(int i=0;i<c;i++)scanf("%d",s+i);
for(int i=0;i<c;i++)scanf("%d",t+i);
for(int i=0;i<c;i++)scanf("%d",y+i);
for(int i=0;i<c;i++)scanf("%d",m+i);
for(int i=0;i<c;i++){
s[i]--;t[i]--;
g[s[i]].push_back(make_pair(t[i],make_pair(y[i],m[i])));
}
for(int i=0;i<60;i++)for(int j=0;j<310;j++)ijk[i][j]=999999999;
ijk[0][0]=0;
priority_queue<pair<int,pair<int,int> > > Q;
Q.push(make_pair(0,make_pair(0,0)));
while(Q.size()){
int cost=-Q.top().first;
int at=Q.top().second.first;
int val=Q.top().second.second;
Q.pop();
if(v[at][val])continue;
v[at][val]=1;
for(int i=0;i<g[at].size();i++){
int to=g[at][i].first;
int toc=val+g[at][i].second.first;
if(toc<=b&&!v[to][toc]&&ijk[to][toc]>cost+g[at][i].second.second){
ijk[to][toc]=cost+g[at][i].second.second;
Q.push(make_pair(-ijk[to][toc],make_pair(to,toc)));
}
}
}
int ret=999999999;
for(int i=0;i<=b;i++)ret=min(ret,ijk[a-1][i]);
if(ret>99999999)printf("-1\n");
else printf("%d\n",ret);
}
👑tozangezan