当前位置:网站首页>AcWing 904. Wormhole solution (SPFA for negative rings)
AcWing 904. Wormhole solution (SPFA for negative rings)
2022-07-07 01:36:00 【Mr. Qiao Da】
AcWing 904. Wormhole
A negative ring is a ring in which the sum of the weights in the graph is negative , If there is a negative ring in the graph , Then the farmer must be able to return to the starting point , On the contrary, it must not , So this is a naked problem of finding negative rings . use spfa Record the number of edges on the shortest path , If the number of edges on a path is greater than or equal to n, Then it can be determined that there is a negative ring on this road , return true that will do , Instead, return to false
#include<bits/stdc++.h>
using namespace std;
const int N = 520, M = 5210;
int T, n, m1, m2;
int h[N], ne[M], e[M], w[M], idx;
int st[N];
int dist[N]; // Shortest distance record array
int cnt[N]; // Record the number of sides of the shortest distance
void add(int a, int b, int c){
e[idx] = b;
ne[idx] = h[a];
w[idx] = c;
h[a] = idx ++ ;
}
bool spfa(){
// Judge negative loop
memset(dist, 0, sizeof dist);
memset(st, 0, sizeof st);
memset(cnt, 0, sizeof cnt);
queue<int>q;
for(int i = 1; i <= n; i ++ ){
q.push(i);
st[i] = true;
}
while(q.size()){
int t = q.front();
q.pop();
st[t] = false;
for(int i = h[t]; ~i; i = ne[i]){
int j = e[i];
if(dist[j] > dist[t] + w[i]){
dist[j] = dist[t] + w[i];
cnt[j] = cnt[t] + 1; // from t To j One more side w[t][j]
if(cnt[j] >= n) return true; // If the number of edges on this path is greater than n, That means there is a negative ring , The farmer must be able to return to the starting point
if(!st[j]){
q.push(j);
st[j] = true;
}
}
}
}
return false; // If you haven't found a negative ring , It means that the farmer cannot return to the starting point , return false
}
int main()
{
cin>>T;
while(T -- ){
cin>>n>>m1>>m2;
memset(h, -1, sizeof h);
idx = 0; // Remember to initialize
for(int i = 0; i < m1; i ++ ){
int a, b, c;
cin>>a>>b>>c;
// Normal path , Equivalent to Bidirectional Transformation
add(a, b, c);
add(b, a, c);
}
for(int i = 0; i < m2; i ++ ){
int a, b, c;
cin>>a>>b>>c;
add(a, b, -c); // Wormhole is equivalent to a negative weight edge
}
if(spfa()) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}
边栏推荐
- Neon Optimization: summary of performance optimization experience
- How to evaluate load balancing performance parameters?
- 移植DAC芯片MCP4725驱动到NUC980
- 2022 Google CTF SEGFAULT LABYRINTH wp
- JS reverse -- ob confusion and accelerated music that poked the [hornet's nest]
- Make Jar, Not War
- Appium foundation - appium inspector positioning tool (I)
- 公钥\私人 ssh避password登陆
- Machine learning: the difference between random gradient descent (SGD) and gradient descent (GD) and code implementation.
- 安利一波C2工具
猜你喜欢
Yunna | work order management software, work order management software app
Comparison of picture beds of free white whoring
Clickhouse fields are grouped and aggregated, and SQL is queried according to the granularity of any time period
Transformation transformation operator
[signal and system]
字节P7专业级讲解:接口测试常用工具及测试方法,福利文
Body mass index program, entry to write dead applet project
云呐|工单管理办法,如何开展工单管理
Set WordPress pseudo static connection (no pagoda)
Byte P7 professional level explanation: common tools and test methods for interface testing, Freeman
随机推荐
AcWing 361. 观光奶牛 题解(spfa求正环)
设置Wordpress伪静态连接(无宝塔)
Go zero micro service practical series (IX. ultimate optimization of seckill performance)
Taro2.* applet configuration sharing wechat circle of friends
云呐|工单管理办法,如何开展工单管理
c语言—数组
ZOJ Problem Set – 2563 Long Dominoes 【如压力dp】
shell脚本快速统计项目代码行数
Installation of gazebo & connection with ROS
鼠标右键 自定义
Yunna | work order management software, work order management software app
DS-5/RVDS4.0变量初始化错误
Transplant DAC chip mcp4725 to nuc980
黑马笔记---创建不可变集合与Stream流
Docker method to install MySQL
Telnet,SSH1,SSH2,Telnet/SSL,Rlogin,Serial,TAPI,RAW
JS reverse -- ob confusion and accelerated music that poked the [hornet's nest]
7.6 simulation summary
405 method not allowed appears when the third party jumps to the website
Make Jar, Not War