• 模板:负环


     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<queue>
     6 using namespace std;
     7 const int maxn=50020;
     8 const int inf=0x3f3f3f3f;
     9 int head[maxn], dis[maxn], used[maxn];
    10 bool vis[maxn];
    11 int T, n, m;
    12 int cnt=0;
    13 queue<int> q;
    14 struct Edge{
    15     int to, w, next;
    16 }e[maxn*4];
    17 inline void add(int u,int v,int w){
    18     cnt++;
    19     e[cnt].next=head[u];
    20     e[cnt].w=w;
    21     e[cnt].to=v;
    22     head[u]=cnt;
    23 }
    24 inline bool spfa(int s){
    25     memset(dis,0x3f,sizeof(dis));
    26     memset(vis,false,sizeof(vis));
    27     memset(used,0,sizeof(used));
    28     dis[s]=0;
    29     q.push(s);
    30     vis[s]=true;
    31     while(!q.empty()){
    32         int u=q.front();
    33         q.pop();
    34         vis[u]=false;
    35         if(used[u]>=n) return false;
    36         for(int i=head[u]; i; i=e[i].next){
    37             int v=e[i].to;
    38             int w=e[i].w;
    39             if(dis[v]>dis[u]+w){
    40                 dis[v]=dis[u]+w;
    41                 used[v]=used[u]+1;
    42                 if(used[v]>=n)    return false;
    43                 if(!vis[v]){
    44                     q.push(v);
    45                     vis[v]=true;
    46                     
    47                 }
    48             }
    49         }
    50     }
    51     return true;
    52 }
    53 int main(){
    54     scanf("%d",&T);
    55     while(T--){
    56         scanf("%d%d",&n,&m);
    57         int a, b, w;
    58         memset(head,0,sizeof(head));
    59         for(int i=1; i<=m; i++){
    60             scanf("%d%d%d",&a,&b,&w);
    61             add(a, b, w);
    62             if(w>=0)    add(b, a, w);
    63         }
    64         if(!spfa(1)) puts("YE5");
    65         else puts("N0");
    66     }
    67     return 0;
    68 }
  • 相关阅读:
    Servlet入门
    序列化
    ConcurrentHashMap红黑树的实现
    ConcurrentHashMap1.7和1.8的源码分析比较
    TCP/IP中的传输层协议TCP、UDP
    Java内存模型和ConcurrentHashMap 1.7源码分析
    JAVA研发面试题
    面试题(Python)
    初识Python
    Python解释器安装与环境变量添加
  • 原文地址:https://www.cnblogs.com/Aze-qwq/p/9889709.html
Copyright © 2020-2023  润新知