码迷,mamicode.com
首页 > 其他好文 > 详细

spfa 模板

时间:2018-11-27 19:29:49      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:出图   div   span   turn   return   lse   int   empty   oid   

题目:给出图的条件 ,求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;
}
View Code

 

spfa 模板

标签:出图   div   span   turn   return   lse   int   empty   oid   

原文地址:https://www.cnblogs.com/shuaihui520/p/10027873.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!