#include<iostream>
#include<queue>
#define inf 0x3f3f3f3f
using namespace std;
int n,m,len;
struct node
{
int u,v,w;
}ans[4005];
int first[4005];
int next[4005];
int dis[4005];
int vis[4005];
void add(int u,int v,int w)
{
ans[len].u=u;
ans[len].v=v;
ans[len].w=w;
next[len]=first[u];
first[u]=len++;
}
void spfa(int st)
{
dis[st]=0;
vis[st]=1;
queue<int>q;
q.push(st);
while(!q.empty())
{
st=q.front();
q.pop();
vis[st]=0;
for(int i=first[st];i!=-1;i=next[i])
{
if(dis[ans[i].v]>dis[st]+ans[i].w)
{
dis[ans[i].v]=dis[st]+ans[i].w;
if(!vis[ans[i].v])
{
vis[ans[i].v]=1;
q.push(ans[i].v);
}
}
}
}
}
int main()
{
int x,y,z;
while(scanf("%d%d",&m,&n)==2)
{
len=1;
memset(dis,inf,sizeof(dis));
memset(vis,0,sizeof(vis));
memset(first,-1,sizeof(first));
memset(next,-1,sizeof(next));
for(int i=1;i<=m;i++)
{
scanf("%d%d%d",&x,&y,&z);
add(x,y,z);
add(y,x,z);
}
spfa(1);
printf("%d\n",dis[n]);
}
return 0;
}
Til the Cows Come Home最短路之SPFA
最新推荐文章于 2020-01-16 11:31:17 发布