hdu 2544 最短路
最短路
Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 13761 Accepted Submission(s): 5856
输入保证至少存在1条商店到赛场的路线。
#include <stdio.h>
#include <string.h>
#include <queue>
using namespace std;
#define INF 1<<20
int map[110][110];
int dis[110];
int n,m;
void spfa( int s)
{
int i,vis[110];
int p;
queue<int>q;
memset(vis,0,sizeof(vis));
for( i=1;i<=n;i++)
{
dis[i]=INF;
}
dis[s]=0;
q.push(s);
vis[s]=1;
while(!q.empty( ))
{
p=q.front( );
q.pop( );
vis[p]=0;
for( i=1;i<=n;i++)
{
if(dis[i]-map[p][i]>dis[p])
{
dis[i]=map[p][i]+dis[p];
if(!vis[i])
{
q.push(i);
vis[i]=1;
}
}
}
}
}
int main( )
{
int i,v,x,y;
while(scanf("%d%d",&n,&m)!=EOF)
{
if(n==0&&m==0) break;
memset(map,0x7f,sizeof(map));
for( i=1;i<=m;i++)
{
scanf("%d%d%d",&x,&y,&v);
map[x][y]=v;map[y][x]=v;
}
spfa(1);
printf("%d\n",dis[n]);
}
return 0;
}
链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544