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;
    }
  • 相关阅读:
    ER/数据库建模工具之MySQL Workbench的使用
    HBase基础架构及原理
    HBase在HDFS上的目录介绍
    zookeeper的三种安装模式
    YCSB之HBase性能测试
    kerberos简单介绍
    springboot 文件上传大小配置
    List集合三种遍历方法
    Linux中给普通用户添加sudo权限
    Linux查看所有用户和组信息
  • 原文地址:https://www.cnblogs.com/ztz11/p/9190013.html
Copyright © 2011-2022 走看看