AcWing 849. Dijkstra求最短路 I
原题链接
简单
作者:
skyswerly
,
2025-03-27 22:19:34
·河北
,
所有人可见
,
阅读 1
#include<bits/stdc++.h>
using namespace std;
const int N=510;
const int INF = 0x3f3f3f3f;
int n,m;
int g[N][N];
int dist[N];
bool st[N];
int dijstria()
{
memset(dist,INF,sizeof dist);
dist[1]=0;
for(int i=0;i<n;++i)
{
int t = -1;
for(int j=1;j<=n;++j)
{
if(!st[j] && (t==-1 || dist[t]>dist[j]))
{
t = j;
}
}
st[t] = true;
for(int j=1;j<=n;++j)
{
dist[j] = min(dist[j] , dist[t] + g[t][j]);
}
}
if(dist[n] == INF) return -1;
return dist[n];
}
int main()
{
cin>>n>>m;
memset(g,INF,sizeof g);
while(m--)
{
int a,b,c;
cin>>a>>b>>c;
g[a][b]=min(g[a][b],c);
}
cout<<dijstria()<<endl;
return 0;
}