#include<bits/stdc++.h>
using namespace std;
int n,m;
const int INF=INT_MAX;
const int N=510;
int g[N][N],dist[N];
bool st[N];
int dijkstra()
{
for (int i = 0; i < N; i++)
dist[i] = INF;
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;
}
}
if(t==-1)
{
break;
}
st[t]=true;
for(int j=1;j<=n;j++)
{
if(g[t][j]<INF)
{
dist[j]=min(dist[j],dist[t]+g[t][j]);
}
}
}
if(dist[n]==INF)
{
return -1;
}
else
{
return dist[n];
}
}
int main ()
{
scanf("%d%d",&n,&m);
for (int i = 0; i < N; i++)
for (int j = 0; j < N; j++)
g[i][j] = INF;
while(m--)
{
int x,y,c;
scanf("%d%d%d",&x,&y,&c);
g[x][y]=min(g[x][y],c);
}
int jb=dijkstra();
cout<<jb<<endl;
return 0;
}
//by crtzk7
迪杰斯特拉(朴素)
最新推荐文章于 2025-12-20 17:21:30 发布
5827

被折叠的 条评论
为什么被折叠?



