hdu 2544 最短路
模版。。
#include"stdio.h"
#include"string.h"
#define INF 99999999
int map[101][101],mark[101],f[101];
int n,m,s,e;
int min(int x,int y)
{
return x<y?x:y;
}
void dijkstra()
{
int i,j,k,m;
memset(mark,0,sizeof(mark));
for(i=1;i<=n;i++)
f[i]=map[1][i];
f[1]=0;
mark[1]=1;
for(i=1;i<=n;i++)
{
m=INF;
for(j=1;j<=n;j++)
{
if(!mark[j]&&f[j]<m)
{
m=f[j];
k=j;
}
}
if(m==INF)break;
mark[k]=1;
for(j=1;j<=n;j++)
if(!mark[j]&&f[j]>f[k]+map[k][j])
f[j]=f[k]+map[k][j];
}
printf("%d\n",f[n]);
}
int main()
{
int i,j,a,b,c;
while(scanf("%d%d",&n,&m)!=EOF&&n&&m)
{
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
map[i][j]=(i==j?0:INF);
for(i=0;i<m;i++)
{
scanf("%d%d%d",&a,&b,&c);
map[a][b]=map[b][a]=min(map[a][b],c);
}
dijkstra();
}
return 0;
}
浙公网安备 33010602011771号