spfa 模板
Posted shuaihui520
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spfa 模板相关的知识,希望对你有一定的参考价值。
题目:给出图的条件 ,求1到n的最短路
#include<cstdio> #include<queue> using namespace std; int u,v,w; struct node { int to,next,w; }edge[100010]; int k; int head[100100]; int dist[100100]; void adde(int u,int v,int w) { edge[++k].to=v; edge[k].next=head[u]; edge[k].w=w; head[u]=k; } bool book[101000]; queue<int> q; int main() { int n,m; scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) { scanf("%d%d%d",&u,&v,&w);//建图 adde(u,v,w); adde(v,u,w);//要建双边 } for(int i=1;i<=n;i++) dist[i]=0x7f7f7f7f;//初始化为无限大 q.push(1);//起点入队 book[1]=true; dist[1]=0; while(!q.empty()) { int mb=q.front();//取出队列里的点 q.pop();//记得pop for(int i=head[mb];i;i=edge[i].next)//便利 { int rp=edge[i].to; if(dist[rp]>dist[mb]+edge[i].w)//松弛 { dist[rp]=dist[mb]+edge[i].w; if(book[rp]==false) q.push(rp); } } } printf("%d",dist[n]); return 0; }
以上是关于spfa 模板的主要内容,如果未能解决你的问题,请参考以下文章