zoukankan      html  css  js  c++  java
  • 【模板】SPFA

    单源最短路径算法,可判负环(如果一个点进队超过N次,则存在负环)

     1 #include<stdio.h>
     2 #define maxv 10005
     3 #define maxe 500005
     4 #define inf 210000000
     5 int vert,edg,tot,s,fr[maxv],to[maxe],nxt[maxe],w[maxe],que[maxe],dist[maxv];
     6 bool inq[maxv];
     7 void adde(int p,int q,int W)
     8 {to[++tot]=q;w[tot]=W;nxt[tot]=fr[p];fr[p]=tot;}
     9 void spfa();
    10 int main()
    11 {
    12     scanf("%d%d%d",&vert,&edg,&s);
    13     int i,p,q,W;
    14     for(i=1;i<=edg;i++)
    15         scanf("%d%d%d",&p,&q,&W),adde(p,q,W);
    16     spfa();
    17     for(i=1;i<=vert;i++) printf("%d ",dist[i]);
    18     return 0;
    19 }
    20 void spfa()
    21 {
    22     int l=0,r=0,i,now,t;
    23     for(i=1;i<=vert;i++) dist[i] = inf;
    24     dist[s] = 0;que[++r] = s; inq[s] = true;
    25     while(l<r)
    26     {
    27         now = que[++l];
    28         inq[now] = false;
    29         for(i=fr[now];i;i=nxt[i])
    30         {
    31             t = to[i];
    32             if(dist[t]>dist[now]+w[i])
    33             {
    34                 dist[t] = dist[now]+w[i];
    35                 if(!inq[t]){que[++r]=t;inq[t]=true;}
    36             }
    37         }
    38     } 
    39 }
    View Code
  • 相关阅读:
    那些优秀的python代码
    ubuntu软件工具推荐
    跨平台APP推荐收藏
    关于python使用的那些事儿
    关于notepad++使用的那些事儿
    关于ubuntu使用的那些事儿
    PyQt4制作GUI
    python操作图片
    杀死进程
    常见配置文件对比
  • 原文地址:https://www.cnblogs.com/hzs2000/p/6708343.html
Copyright © 2011-2022 走看看