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

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<queue>
     5 using namespace std;
     6 struct edge{
     7     int to;
     8     int next;
     9     int len;
    10 }qwq[100005];
    11 queue<int>pq;
    12 int edge_cnt=0,n,m,head[100005],in[100005],stk[100005],dist[100005];
    13 bool spfa()
    14 {
    15     memset(in,0,sizeof(in));
    16     memset(stk,0,sizeof(stk));
    17     memset(dist,-1,sizeof(dist));
    18     dist[0]=0;
    19     while(!pq.empty())
    20     {
    21         pq.pop();
    22     }
    23     pq.push(0);
    24     in[0]++;
    25     stk[0]=1;
    26     while(!pq.empty())
    27     {
    28         int qaq=pq.front();pq.pop();
    29         stk[qaq]=0;
    30         for(int i = head[qaq];i!=-1;i=qwq[i].next)
    31         {
    32             int v=qwq[i].to;
    33             if(dist[v]<dist[qaq]+qwq[i].len)
    34             {
    35                 dist[v]=dist[qaq]+qwq[i].len;
    36                 if(!stk[v])
    37                 {
    38                     pq.push(v);
    39                     in[v]++;
    40                     stk[v]=1;
    41                     if(in[v]>n+1){
    42                         return false;
    43                     }
    44                 }
    45             }
    46         }
    47     }
    48     return true;
    49 }
    50 void add(int x,int y,int z)
    51 {
    52     qwq[edge_cnt].to=y;
    53     qwq[edge_cnt].next=head[x];
    54     qwq[edge_cnt].len=z;
    55     head[x]=edge_cnt++; 
    56 }
    57 int main()
    58 {
    59         scanf("%d%d",&n,&m);
    60            memset(head,-1,sizeof(head));
    61          edge_cnt=0;
    62         for(int i = 0 ; i < m ;i++)
    63         {
    64             int a,b,c;
    65              scanf("%d%d%d",&a,&b,&c);
    66             add(a,b,c);
    67          }
    68      if(!spfa())printf("-1
    ");
    69     return 0;
    70  }
  • 相关阅读:
    移动端常用单位——rem
    媒体查询media query
    canvas——绘制解锁图案
    canvas——离屏
    canvas——动画实例
    canvas绘制圆弧
    canvas二次贝塞尔&三次贝塞尔操作实例
    form表单中id与name的区别
    数据存储 mysql
    数据存储 csv
  • 原文地址:https://www.cnblogs.com/MekakuCityActor/p/8999538.html
Copyright © 2011-2022 走看看