結果
問題 | No.1449 新プロランド |
ユーザー |
![]() |
提出日時 | 2021-03-31 15:13:01 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 1,152 bytes |
コンパイル時間 | 3,598 ms |
コンパイル使用メモリ | 202,468 KB |
最終ジャッジ日時 | 2025-01-20 01:48:51 |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 25 WA * 1 |
ソースコード
#include<bits/stdc++.h>using namespace std;vector<vector<pair<int,int>>> G(102,vector<pair<int,int>>(0));vector<int> D(101234);int INF=10000000;int N;vector<int> T(102);void ijk(int s){for(int i=0;i<(int)(D.size());i++){D[i]=INF;}D[s]=0;priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>> Q;Q.push(make_pair(0,s));int v,x,y,a,b;pair<int,int> p;while(!Q.empty()){p=Q.top();Q.pop();v=p.second;x=v/N;y=v-x*N;if(D[v]<p.first){continue;}for(int i=0;i<(int)(G[y].size());i++){a=G[y][i].first;b=G[y][i].second/x;if(D[min(1001,T[a]+x)*N+a]>D[v]+T[a]+b){D[min(1001,T[a]+x)*N+a]=D[v]+T[a]+b;Q.push(make_pair(D[min(1001,T[a]+x)*N+a],min(1001,T[a]+x)*N+a));}}}}int main(){int M;cin>>N>>M;int a,b,c;for(int i=0;i<M;i++){cin>>a>>b>>c;a--;b--;G[a].push_back(make_pair(b,c));G[b].push_back(make_pair(a,c));}for(int i=0;i<N;i++){cin>>T[i];}ijk(T[0]*N);int ANS=INF;for(int i=0;i<=1000;i++){ANS=min(ANS,D[(i+1)*N-1]+T[0]);}cout<<ANS<<"\n";}