poj3259 Bellman_ford算法
来源:互联网 发布:linux 开机自启动 编辑:程序博客网 时间:2024/06/03 22:41
//poj3259 类似 poj1860, 探求能否出发,然后通过虫洞在出发前的时间点回来 //如果单源最短路径构造之后,发现还是可以继续构造下去,说明某条路可以实现时间一直减的效果//无限次走这条路,就可以达到目标。 //dist的初始化大小搞错了 害的我WA了1次,RE了2次。。 #include <iostream>#include <string>using namespace std;int num; //边数 int dist[505];int inf = 10005;struct edge{int st;int ed;int w;}e[6000];void addEdge(int st, int ed, int t){e[num].st = st;e[num].ed = ed;e[num++].w = t;}bool CC(int nodeNum){for(int i = 0; i <= nodeNum; i++){dist[i] = inf;}dist[1] = 0;//构造单源(1)最短路径表bool flag = false; for(int i = 0; i < nodeNum; i++){for(int j = 0; j < num; j++){int u = dist[e[j].st];int v = dist[e[j].ed];if(v > u + e[j].w){dist[e[j].ed] = u + e[j].w;flag = true;}}if(!flag)break;} for(int i = 0; i < num; i++){if(dist[e[i].ed] > dist[e[i].st] + e[i].w) //如果还存在着负权环 return true;}return false;}int main(){int f;cin>>f;while(f--){num = 0;int n, m, worm;cin>>n>>m>>worm;int st, ed, t;for(int i = 0; i < m; i++){cin>>st>>ed>>t;addEdge(st, ed, t);addEdge(ed, st, t);}for(int i = 0; i < worm; i++){cin>>st>>ed>>t;addEdge(st, ed, -t);}bool ok = CC(n);if(ok)cout<<"YES"<<endl;elsecout<<"NO"<<endl;}return 0;}
0 0
- poj3259 Bellman_ford算法
- Bellman_Ford POJ3259
- poj3259(Bellman_ford)
- poj3259 Bellman_Ford
- poj3259 Bellman_ford
- poj3259 bellman_ford 算法 判环 最短路
- POJ3259-JAVA语言描述-Bellman_Ford算法
- poj3259( spfa 和 bellman_ford)
- POJ3259 Wormholes 解题报告--bellman_ford
- POJ3259 Wormholes SPFA 或者 bellman_ford
- Bellman_ford算法
- Bellman_ford算法
- Bellman_ford算法
- Bellman_Ford 算法
- Bellman_Ford算法
- Bellman_Ford算法
- Bellman_Ford算法
- Bellman_Ford算法
- 项目四-数组的排序
- 【提高C++性能的编程技术】读书笔记1 -- 导言
- C++/C动态二维数组内存分配举例
- 马云语录
- SPOJ LCS2 1812
- poj3259 Bellman_ford算法
- error LNK2019: 无法解析的外部符号 ***,该符号在函数 "***"中被引用 || 错误:无法打开导入的***.lib 文件
- 第十三周项目6-体验文件操作
- 开放话题系列之使用新技术还是使用成熟技术
- 取磁盘驱动器参数 int 0x13
- 鸟哥的Linux学习笔记之 一
- 斐波那契数列
- CocoaPods详解之----进阶篇
- Adobe 相关软件安装问题