zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    使用ParseExact方法将字符串转换为日期格式
    Windows 备用数据流(ADS)的妙用___转载
    ms17_010利用复现(32位)
    将手机号设置为空号
    PowerShell批量创建文件夹
    让程序显示运行时间
    使用Sleep方法延迟时间
    使用TimeSpan对象获取时间间隔
    DateTime小综合
    DDMS介绍
  • 原文地址:https://www.cnblogs.com/ztz11/p/9190013.html
Copyright © 2011-2022 走看看