poj3259 Bellman-Ford
来源:互联网 发布:看门狗低配置优化补丁 编辑:程序博客网 时间:2024/05/23 15:51
还是一个求最短路径问题,不过不是求最短而是判断是否存在负权回路。
判断是否存在负权回路,当然要用Bellman-Ford算法了。
水题,不多说了,代码如下:
#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<algorithm>#define MAX 555#define inf 999999using namespace std;struct Edge{ int u,v; int t; Edge(int U=0,int V=0,int T=0) { u=U;v=V;t=T; }};Edge edge[10*MAX];int dis[MAX];int F,N,M,W;bool Bellman_Ford(int nodenum,int edgenum,int original){for(int i = 1; i <= nodenum; ++i) //初始化dis[i] = (i == original ? 0 : inf);for(int i = 1; i <= nodenum - 1; ++i)for(int j = 1; j <= edgenum; ++j)if(dis[edge[j].v] > dis[edge[j].u] + edge[j].t) //松弛(顺序一定不能反~){dis[edge[j].v] = dis[edge[j].u] + edge[j].t;} bool flag = 1; //判断是否含有负权回路 for(int i = 1; i <= edgenum; ++i) if(dis[edge[i].v] > dis[edge[i].u] + edge[i].t) { flag = 0; break; } return flag;}void input(){ int i,j=1,s,e,t; scanf("%d",&F); while(F) { j=1; scanf("%d%d%d",&N,&M,&W); for(i=1;i<=M;i++) { scanf("%d%d%d",&s,&e,&t); edge[j++]=Edge(s,e,t); edge[j++]=Edge(e,s,t); } for(i=1;i<=W;i++) { scanf("%d%d%d",&s,&e,&t); edge[j++]=Edge(s,e,-1*t); } if(Bellman_Ford(N,2*M+W,1)) printf("NO\n"); else printf("YES\n"); F--; }}int main(){ input(); return 0;}
0 0
- poj3259 Bellman-Ford
- poj3259 bellman—ford
- [水]poj3259 (Bellman-ford)
- POJ3259《Wormholes》方法:Bellman-ford
- POJ3259 Bellman-Ford算法 求负环
- poj3259 Wormholes (Bellman-Ford算法)
- POJ3259—Bellman-Ford算法实现
- POJ3259--Wormholes--Bellman-Ford算法经典题
- POJ3259 Wormholes(Bellman-ford 负环)
- POJ3259 Wormholes (Bellman-Ford最短路径算法)
- POJ3259 农场与虫洞 图论(Bellman-Ford求负环)
- POJ3259(Wormholes)(Bellman-Ford判断负权图 )
- Bellman-Ford
- bellman-ford
- Bellman-Ford
- Bellman-Ford
- Bellman-Ford
- Bellman-Ford
- 语音识别另一著名Nuance公司
- android 广告平台—杀毒软件是如何知道是否有广告的
- 为什么年事已高的我还在编程?
- c++内存分布
- 蓝桥杯蚂蚁感冒问题
- poj3259 Bellman-Ford
- Django1---安装,服务初步运行
- 鼠标单击变双击问题排查
- poj 3006水题打素数表
- Shell 的种类
- C# 将网页调用本地程序的URL Protocol 协议写到注册表中
- python与mysql连接的中文编码(在notepad++)
- Linux下MySQL数据库常用基本操作
- 一个令人深思的帖子!