您的位置:首页 > 其它

spfa模板 hdu 2544

2014-05-30 19:37 369 查看
标准最短路,可以用dijsktra,也可以用bell-ford,当然spfa是最好的选择。

//spfa

#include <iostream>
#include <string.h>
using namespace std;

int i,j,k,l,visit[1001],r,a[1001][1001],d[1001],q[1001],n,m,x,y;

int main()
{
while (cin >> n >> m&&(n!=0||m!=0))
{
memset(a,0x3f,sizeof(a));
memset(d,0x3f,sizeof(d));
memset(visit,0,sizeof(visit));
for (i=0;i<m;i++)
{
cin >> x >> y;
cin >> a[x][y];
a[y][x]=a[x][y];
}
d[1]=0;
q[0]=1;
visit[1]=1;
l=0;
r=1;
while (l<r)
{
k=q[l];
visit[k]=0;
for (i=1;i<=n;i++)
{
if (d[k]+a[k][i]<d[i])
{
d[i]=d[k]+a[k][i];
if (!visit[i])
{
visit[i]=1;
q[r++]=i;
}
}
}
l++;
}
cout << d
<< endl;
}
return  0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: