spfa模板 hdu 2544

来源:互联网 发布:单片机plc哪个好学 编辑:程序博客网 时间:2024/04/30 14:33

标准最短路,可以用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[n] << endl;          }    return  0;    }

0 0
原创粉丝点击