Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
41362 | 梅煦洋 | 城市路(Dijkstra) | C++ | 解答错误 | 9 | 1 MS | 1036 KB | 724 | 2022-06-11 17:20:33 |
#include<bits/stdc++.h> using namespace std; const int N=100010; int k,n,m; //int g[N][N]; int dist[N]; int backup[N]; struct edge{ int a; int b; int w; }edge[N]; int befd(){ memset(dist,0x3f,sizeof dist); dist[1]=0; for(int i=1;i<=k;i++){ memcpy(backup,dist,sizeof dist); for(int j=1;j<=m;j++){ int a=edge[j].a,b=edge[j].b,w=edge[j].w; dist[b]=min(dist[b],backup[a]+w); // st[t]=true; } } // if(dist[n]==0x3f3f3f3f) return -1; return dist[n]; } int main(){ cin>>n>>m; k=m; for(int i=1;i<=m;i++){ int a,b,c; cin>>a>>b>>c; edge[i].a=a,edge[i].b=b,edge[i].w=c; } int t=befd(); if(t>=0x3f3f3f3f/2) cout<<-1<<endl; else cout<<t<<endl; return 0; }