标签:
2 1 1 2 3 3 3 1 2 5 2 3 5 3 1 2 0 0
3 2
#include<stdio.h>
#define INL 10000000
#define min(a,b) (a)>(b)?(b):(a)
int x[10010][10010],n,m,s[10000],p[10000];
void Dijkstra()
{
int i,j,k;
for(i=1;i<=n;i++)
{
s[i]=0;
p[i]=INL;
}
p[1]=0;//这个地方刚开始没考虑到
while(1)
{
k=-1;
for(i=1;i<=n;i++)
if(s[i]==0&&(k==-1||p[i]<p[k]))
k=i;
if(k==-1)
break;
s[k]=1;
for(int v=1;v<=n;v++)
p[v]=min(p[v],p[k]+x[k][v]);
}
printf("%d\n",p[n]);
}
int main()
{
while(scanf("%d%d",&n,&m),n|m)
{
int i,a,b,c,j;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
x[i][j]=INL;
for(i=0;i<m;i++)
{
scanf("%d%d%d",&a,&b,&c);
x[a][b]=c;
x[b][a]=c;
}
Dijkstra();
}
return 0;
}版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/l15738519366/article/details/47726327