您的位置:首页 > 其它

HDU 2544 最短路【SPFA + SLF】

2012-05-18 22:43 405 查看
题意: 求单源最短路,起点为1,终点为 n .

分析: SPFA 加了点优化。。。

View Code

#include<stdio.h>
#include<string.h>
#define INF 0x1f1f1f
int n;
int v[102],dis[102],g[102][102],q[102];
void spfa()
{
int rear,front,i,x;
memset(v,0,sizeof(v));
front=rear=0;
q[rear++]=1;
dis[1]=0;
v[1]=1;
while(front<rear)
{
x=q[front++];
v[x]=0;
for(i=1;i<=n;i++)
if(dis[i]>dis[x]+g[x][i])
{
dis[i]=dis[x]+g[x][i];
if(!v[i])
{
v[i]=1;
if(dis[i]<=dis[x]&&front>0)
q[--front]=i;
else q[rear++]=i;
}
}
}
}
int main()
{
int m,a,b,w;
while(scanf("%d%d",&n,&m),n||m)
{
memset(dis,INF,sizeof(dis));
memset(g,INF,sizeof(g));
while(m--)
{
scanf("%d%d%d",&a,&b,&w);
g[a][b]=g[b][a]=w;
}
spfa();
printf("%d\n",dis
);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: