当前位置: 首页 > news >正文

P3385 【模板】负环

// Bellman-Ford算法 O(nm)
#include<bits/stdc++.h>
#define INF 0X3F3F3F3F
using namespace std;
const int N=1e4+5;
struct node {int v, w;
};
vector<node> e[N];
int t, n, m, d[N];
bool bellman(int s) {memset(d, INF, sizeof d); d[s]=0;bool flag; //是否松弛 for(int i=1; i <= n; i++) { //n轮 flag=false;for(int u=1; u <= n; u++) { //n点 if(d[u] == INF) continue;for(auto i : e[u]) { // u的出边 int v=i.v, w=i.w;if(d[v] > d[u]+w) {d[v]=d[u]+w;flag=true;} }}if(!flag) break;}return flag; //第n轮仍为true则有环 
}
signed main() {ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);cin >> t;while(t--) {cin >> n >> m;for(int i=1; i <= n; i++) e[i].clear(); for(int i=1, u, v, w; i <= m; i++) {cin >> u >> v >> w;e[u].push_back({v, w});if(w >= 0) e[v].push_back({u, w});}if(bellman(1)) puts("YES");else puts("NO");}return 0;
}
// spfa算法 O(m~nm)
#include<bits/stdc++.h>
#define INF 0X3F3F3F3F
using namespace std;
const int N=1e4+5;
struct node {int v, w;
};
vector<node> e[N];
int t, n, m, d[N], vis[N], cnt[N];bool spfa(int s) {memset(d, INF, sizeof d); d[s]=0;memset(vis, false, sizeof vis);memset(cnt, 0, sizeof cnt); queue<int> q; q.push(s); vis[s]=true; //标记在队中 while(!q.empty()) {int u=q.front(); q.pop(); vis[u]=false; //标记不在队中 for(auto i : e[u]) {int v=i.v, w=i.w;if(d[v] > d[u]+w) {d[v]=d[u]+w;if(!vis[v]) //不在队中才入队 q.push(v), vis[v]=true; cnt[v]=cnt[u]+1; //边数+1 if(cnt[v] >= n) return true; //有负环 } }}return false; 
}signed main() {ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);cin >> t;while(t--) {cin >> n >> m;for(int i=1; i <= n; i++) e[i].clear(); for(int i=1, u, v, w; i <= m; i++) {cin >> u >> v >> w;e[u].push_back({v, w});if(w >= 0) e[v].push_back({u, w});}if(spfa(1)) puts("YES");else puts("NO");}return 0;
}
http://www.jsqmd.com/news/405942/

相关文章:

  • C++ STL 迭代器详解
  • 2026年想转行网络安全?这篇收藏级攻略带你了解真实网安职场!
  • 应用安全 --- 安卓加固 之 一个简单的安卓ctf
  • BSC节点发现协议全解析:UDP发现、Bootnode引导与Gossip交易广播 - 若
  • 告别数据膨胀:TDengine 的高压缩比如何节省您的存储成本
  • 【建议收藏】大模型的“寒窗苦读“与“应用实践“:训练与推理详解
  • 【GitHub项目推荐--Escrcpy:基于AI的下一代Android设备智能控制平台】⭐
  • 【GitHub项目推荐--Tunnelto:高性能本地服务隧道工具】⭐⭐⭐
  • 大模型开发必备:Langchain框架全面解析
  • Domain Admin 从零开始搭建教程
  • Apache ZooKeeper 简介
  • 读地藏经好处 - 番外篇一(背诵古文)
  • spl注入之数据提交方式
  • 收藏必备!Agent Skills让AI告别“短期失忆症“,实现能力复用新范式
  • 解析抖音评论采集器|爬虫|c#
  • P4779 【模板】单源最短路径(标准版)
  • 那条看不见的线
  • 独立开发先写前端还是先写后端?
  • 一个前端一天可以做多少页面?
  • RAG+LangChain实战部署(非常详细),建筑设计私有知识库从入门到精通,收藏这一篇就够了!
  • 突破微米级挑战:基于SIMSCAN三维扫描的航空航天叶片全型面无损检测方案深度解析
  • 为什么现在的年轻人越来越讨厌人情世故了?
  • Vue 中的 deep、v-deep 和 >>> 有什么区别?什么时候该用?
  • Agentic Reasoning全维度解读(非常详细),大模型智能体推理原理与技术从入门到精通,收藏这一篇就够了!
  • 提示词工程深度剖析(非常详细),四个认知颠覆AI开发理解,收藏这一篇就够了!
  • GLM-5技术报告深度精读(非常详细),多步任务强化学习从入门到精通,收藏这一篇就够了!
  • LangGraph实战全攻略(非常详细),打造带“人工审批”的智能体流水线从入门到精通,收藏这一篇就够了!
  • 从Prompt工程到Judgement工程:AI时代普通人如何提升决策力?
  • 自进化Agent深度解析(非常详细),经验写回与记忆闭环从入门到精通,收藏这一篇就够了!
  • 拜托!学习大模型的顺序,千万别弄反了掌握AI大模型,开启程序员职业新风口!