当前位置:网站首页>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;
}
原创不易
转载请标明出处
如果对你有所帮助 别忘啦点赞支持哈
边栏推荐
- post请求体内容无法重复获取
- 浏览器node事件循环
- Find the factorial of a positive integer within 16, that is, the class of n (0= < n < =16). Enter 1111 to exit.
- Discrimination of the interval of dichotomy question brushing record (Luogu question sheet)
- 包管理工具
- CDH存在隐患 : 该角色的进程使用的交换内存为xx兆字节。警告阈值:200字节
- Leetcode14 longest public prefix
- Error in kubeadm join: [error port-10250]: port 10250 is in use [error fileavailable--etc kubernetes PKI
- Sparkcontext: error initializing sparkcontext solution
- Simple understanding of ThreadLocal
猜你喜欢

Enhance network security of kubernetes with cilium

刷题---二叉树--2

The programmer and the female nurse went on a blind date and spent 360. He packed leftovers and was stunned when he received wechat at night

The differences and relationships among port, targetport, nodeport and containerport in kubenetes

Distributed machine learning framework and high-dimensional real-time recommendation system

Lekao: 22 year first-class fire engineer "technical practice" knowledge points

MySQL indexes and transactions

Map and set

分布式机器学习框架与高维实时推荐系统

寻找二叉树中任意两个数的公共祖先
随机推荐
drools动态增加、修改、删除规则
Leetcode922 sort array by parity II
[C language] Yang Hui triangle, customize the number of lines of the triangle
drools执行String规则或执行某个规则文件
怎样写一篇赏心悦目的英文数学论文
浏览器存储方案
Fluent fluent library encapsulation
async/await 异步函数
Error in kubeadm join: [error port-10250]: port 10250 is in use [error fileavailable--etc kubernetes PKI
mysql数据库基础
Fastdateformat why thread safe
Leetcode122 the best time to buy and sell stocks II
堆(优先级队列)
[ybtoj advanced training guidance] cross the river [BFS]
CV2 in OpenCV VideoWriter_ Fourcc() function and cv2 Combined use of videowriter() function
In development, why do you find someone who is paid more than you but doesn't write any code?
JSON序列化 与 解析
post请求体内容无法重复获取
LeetCode—剑指 Offer 37、38
drools执行指定的规则
