zoukankan      html  css  js  c++  java
  • Spfa算法模板

    输入点数n,边数m,起点终点边权

    输出1号节点到所有点的最短路径长度

    #include<iostream>
    #include<queue>
    #include<cstring>
    using namespace std;
    int n,head[100000],num,m,dis[100000];
    bool vis[100000];
    struct node{
        int pre,v,to,from;
    }e[100000];
    queue<int>q;
    void put(int from,int to,int v)
    {
        e[++num].pre=head[from];
        e[num].from=from;
        e[num].to=to;
        e[num].v=v;
        head[from]=num;
    }
    void spfa(int s)
    {
        q.push(s);vis[s]=1;
        int point=s;
        while(!q.empty())
        {
            point=q.front();
            q.pop();
            vis[point]=0;
            for(int i=head[point];i;i=e[i].pre)
                if(dis[e[i].from]+e[i].v<dis[e[i].to])
                {
                    dis[e[i].to]=dis[e[i].from]+e[i].v;
                    q.push(e[i].to);
                    vis[e[i].to]=1;                
                }
        }
    }
    int main()
    {
        cin>>n>>m;
        int x,y,v;
        memset(dis,127/3,sizeof(dis));
        dis[1]=0;
        for(int i=1;i<=m;i++)
        {
            cin>>x>>y>>v;
            put(x,y,v);
            put(y,x,v);
        }
        spfa(1);
        for(int i=1;i<=n;i++)cout<<dis[i]<<' ';
    }
  • 相关阅读:
    Java基础-3y
    对线面试官面试系列-3y
    从零单排学Redis【青铜】
    mock官方文档
    route路由组件传递参数
    axios拦截器与vue代理设置
    Sass使用方法
    Less使用方法
    Vue-cli
    Vue-组件注册
  • 原文地址:https://www.cnblogs.com/thmyl/p/6193729.html
Copyright © 2011-2022 走看看