当前位置:网站首页>spfa AcWing 852. spfa判断负环
spfa AcWing 852. spfa判断负环
2022-07-02 09:43:00 【T_Y_F666】
spfa AcWing 852. spfa判断负环
原题链接
算法标签
负环判定 spfa
思路
代码
#include<bits/stdc++.h>
#define int long long
#define rep(i, a, b) for(int i=a;i<b;++i)
#define Rep(i, a, b) for(int i=a;i>b;--i)
using namespace std;
const int N = 100005;
// cnt[i]存储第i个节点需要经过边数
int h[N], e[N], ne[N], w[N], idx, cnt[N];
int dis[N];
bool st[N];
int n,m;
inline int read(){
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
return s*w;
}
void put(int x) {
if(x<0) putchar('-'),x=-x;
if(x>=10) put(x/10);
putchar(x%10^48);
}
void add(int a, int b, int c){
e[idx]=b;
w[idx]=c;
ne[idx]=h[a];
h[a]=idx++;
}
bool sp(){
queue<int> q;
// 该题是判断是否存在负环
// 因此需要将所有的点都加入队列中,更新周围的点
rep(i, 1, n+1){
st[i]=true;
q.push(i);
}
while(q.size()){
int t=q.front();
q.pop();
st[t]=false;
for(int i=h[t];i!=-1;i=ne[i]){
int j=e[i];
if(dis[j]>dis[t]+w[i]){
dis[j]=dis[t]+w[i];
cnt[j]=cnt[t]+1;
if(cnt[j]>=n){
return true;
}
if(!st[j]){
q.push(j);
st[j]=true;
}
}
}
}
return false;
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
memset(h, -1, sizeof h);
n=read(), m=read();
while(m--){
int x=read(), y=read(), z=read();
add(x, y, z);
}
if(sp()){
puts("Yes");
}else{
puts("No");
}
return 0;
}
原创不易
转载请标明出处
如果对你有所帮助 别忘啦点赞支持哈
边栏推荐
猜你喜欢
寻找二叉树中任意两个数的公共祖先
Performance tuning project case
浏览器node事件循环
BOM DOM
Sweetheart leader: Wang Xinling
[old horse of industrial control] detailed explanation of Siemens PLC TCP protocol
(C language) 3 small Codes: 1+2+3+ · · +100=? And judge whether a year is a leap year or a normal year? And calculate the circumference and area of the circle?
Initial JDBC programming
Multiply LCA (nearest common ancestor)
模块化 CommonJS ES Module
随机推荐
[C language] convert decimal numbers to binary numbers
Writing method of then part in drools
drools决策表的简单使用
BOM DOM
趣味 面试题
Bom Dom
Anxiety of a 211 programmer: working for 3 years with a monthly salary of less than 30000, worried about being replaced by fresh students
单指令多数据SIMD的SSE/AVX指令集和API
防抖 节流
kubenetes中port、targetPort、nodePort、containerPort的区别与联系
MySQL and PostgreSQL methods to grab slow SQL
Sweetheart leader: Wang Xinling
Day12 control flow if switch while do While guessing numbers game
JSON序列化 与 解析
LeetCode—剑指 Offer 37、38
Introduction to CPU instruction set
Less than three months after the programmer was hired, the boss wanted to launch the app within one month. If he was dissatisfied, he was dismissed immediately
arcgis js 4. Add pictures to x map
There is a hidden danger in CDH: the exchange memory used by the process of this role is XX megabytes. Warning threshold: 200 bytes
Deep Copy Event bus