• spfa模板


    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int cnt,st,ed,s,t,w,h[10005],dis[10005],stack[10005];
    int q[40005];
    struct Node{
        int to,w,next;
    }edge[10005];//10005,1005
    void add(int s,int t,int v)
    {
        cnt++;
        edge[cnt].to=t;
        edge[cnt].w=v;
        edge[cnt].next =h[s];
        h[s]=cnt;
    }
    int spfa()
    {
        int head=1,tail=1;
        q[1]=st;
        while(head<=tail)
        {
            int u=q[head];
            for(int i=h[u];i;i=edge[i].next)
            {
                int v=edge[i].to;
                if(edge[i].w+dis[u]<dis[v])
                {
                    dis[v]=edge[i].w+dis[u];
                    if(!stack[v])
                    {
                        stack[v]=1;
                        tail++;
                        q[tail]=v;  
                    }
                }
            }
            head++; 
            stack[u]=0;//退出栈 
        }
    }
    int main()
    {
        int n,m;
        scanf("%d%d",&n,&m);
        for(int i=1;i<=m;i++)
        {
            scanf("%d%d%d",&s,&t,&w);
            add(s,t,w);
        }
        scanf("%d%d",&st,&ed);//起点,终点 
        memset(dis,1,sizeof dis);
        dis[st]=0;
        spfa();
        cout<<dis[ed]<<endl;
    }
  • 相关阅读:
    第八天
    第六天 yum 磁盘分区与格式化
    第五天 权限掩码vim编辑器 软件包安装和管理
    第12组 Alpha冲刺 总结
    第12组 Alpha冲刺(6/6)
    第12组 Alpha冲刺(5/6)
    第12组 Alpha冲刺(4/6)
    第12组 Alpha冲刺(3/6)
    第12组 Alpha冲刺(2/6)
    第12组 Alpha冲刺(1/6)
  • 原文地址:https://www.cnblogs.com/ztz11/p/9190013.html
Copyright © 2020-2023  润新知