当前位置:网站首页>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;
}
原创不易
转载请标明出处
如果对你有所帮助 别忘啦点赞支持哈
边栏推荐
- AI mid stage technology research
- 浏览器存储方案
- CDA data analysis -- common knowledge points induction of Excel data processing
- Input a three digit number and output its single digit, ten digit and hundred digit.
- PR 2021 quick start tutorial, learn about the and functions of the timeline panel
- Sse/avx instruction set and API of SIMD
- 2.6 using recursion and stack - [tower of Hanoi problem]
- [ybtoj advanced training guidance] judgment overflow [error]
- OpenCV中cv2.VideoWriter_fourcc()函数和cv2.VideoWriter()函数的结合使用
- Map和Set
猜你喜欢

Bom Dom

Heap (priority queue)

Why do programmers have the idea that code can run without moving? Is it poisonous? Or what?

Writing method of then part in drools
![[C language] convert decimal numbers to binary numbers](/img/9b/1848b68b95d98389ed985c83f2e856.png)
[C language] convert decimal numbers to binary numbers

高性能纠删码编码

中国交通标志检测数据集

CDA data analysis -- Introduction and use of aarrr growth model

MySQL and PostgreSQL methods to grab slow SQL

堆(優先級隊列)
随机推荐
Leetcode - Sword finger offer 37, 38
kubeadm join时出现错误:[ERROR Port-10250]: Port 10250 is in use [ERROR FileAvailable--etc-kubernetes-pki
深拷貝 事件總線
Leetcode209 subarray with the smallest length
Go learning notes - go based interprocess communication
CDA数据分析——Excel数据处理的常见知识点归纳
Heap (priority queue)
drools中then部分的写法
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
LeetCode—剑指 Offer 59 - I、59 - II
This "little routine" is set on the dough cake of instant noodles. No wonder programmers are always hungry
Intel 内部指令 --- AVX和AVX2学习笔记
[ybtoj advanced training guidance] cross the river [BFS]
js 迭代器 生成器 异步代码处理 promise+生成器 -> await/async
Leetcode - Sword finger offer 59 - I, 59 - II
mysql索引和事务
Sub thread get request
MySQL与PostgreSQL抓取慢sql的方法
Differences between nodes and sharding in ES cluster
JSON序列化 与 解析
