poj 3259 Wormhole【bellman_ford】
来源:互联网 发布:js 判断是否是整数 编辑:程序博客网 时间:2024/06/05 22:52
Wormholes
Time Limit: 2000MS Memory Limit: 65536KTotal Submissions: 37995 Accepted: 13992
题目大意:约翰的农场有n块地,有m条双向的路(权值为正,即时间在流逝),有w个虫洞【单向路】(权值为负,即时间倒退),问,从任意一点开始,能回到过去么?
题目分析:n块地看做n个点,然后有2 * m条权值为正的边,再有w条权值为负的边,形成一个图,问图中是否存在负环
已Accept代码[【c++提交】:
#include <cstdio>#include <cstring>#define maxn 100000#define INF 0x3f3f3f3fusing namespace std;int n, m, w;//点的个数,双向道路的条数,单向道路的条数 typedef struct Edge {int x, y, t;//起点,终点,权值 }Edge;Edge edge[maxn];int dis[maxn];void relax(int x, int y, int t) {//松弛 if(dis[y] > dis[x] + t)dis[y] = dis[x] + t;}bool Beelman() {for(int i = 1; i <= n - 1; ++i)for(int j = 1; j <= 2 * m + w; ++j)relax(edge[j].x, edge[j].y, edge[j].t);bool flag = 1;for(int i = 1; i <= 2 * m + w; ++i)// 判断是否有负环路if(dis[edge[i].y] > dis[edge[i].x] + edge[i].t) {flag = 0;break;}return flag;}int main() {int t;scanf("%d", &t);while(t--) {scanf("%d%d%d", &n, &m, &w);for(int i = 0; i <= n; i++)dis[i] = INF;dis[1] = 0;for(int i = 1; i <= m * 2; i++) { //注意,是m条双向路,一条双向路 可以看成两条路 (a 到 b) (b 到 a); scanf("%d%d%d", &edge[i].x, &edge[i].y, &edge[i].t);if(edge[i].x == 1)dis[edge[i].y] = edge[i].t;i++;edge[i].x = edge[i - 1].y;edge[i].y = edge[i - 1].x;edge[i].t = edge[i - 1].t;if(edge[i].x == 1)//注意此处 dis[edge[i].y] = edge[i].t;}for(int i = m * 2 + 1; i < m * 2 + 1 + w; i++) {scanf("%d%d%d", &edge[i].x, &edge[i].y, &edge[i].t);edge[i].t = (-1) * edge[i].t;if(edge[i].x == 1)dis[edge[i].y] = edge[i].t;}if(Beelman())printf("NO\n");elseprintf("YES\n");}return 0;}
0 0
- poj 3259 Wormhole【bellman_ford】
- POJ 3259 bellman_ford算法
- Bellman_ford poj 3259
- POJ 3259 Wormholes bellman_ford
- Poj 3259(bellman_ford)
- POJ 3259 Bellman_Ford
- poj 3259 Wormholes (bellman_ford)
- POJ 3259 Wormholes (bellman_ford)
- POJ 3259 Wormholes (Bellman_Ford)
- POJ 3259 Wormholes(Bellman_Ford判负圈)
- poj 3259 Wormholes[ bellman_ford 判负环]
- Poj 3259 Wormholes(bellman_ford判负环)
- POJ-3259 Wormholes (bellman_ford算法)
- Poj 1860 && poj 3259 剖析bellman_ford算法
- poj 3259 (Bellman_Ford判断负环)
- POJ 3259 Wormholes(最短路Bellman_Ford)
- POJ 3259:Wormholes:bellman_ford算法判负环
- POJ 3259 Wormholes (bellman_ford算法判负环)
- poj3461 Oulipo(KMP)
- Linux PureFTPd配置(完整版)
- 0015求十进制数转化成二进制数后1的个数(程序员面试宝典上例题)
- 使用ThinkPHP框架快速开发网站(多图)
- c# winfrom程序中 enter键关联button按钮
- poj 3259 Wormhole【bellman_ford】
- Android基础入门教程——1.1 背景相关与系统架构分析
- 欢迎使用CSDN-markdown编辑器
- Java substring使用方法
- HDU 1239 暴力
- css的background 属性
- ThinkPHP创建应用的一般开发流程及实例
- [leetcode#4]Longest Common Prefix
- 操作系统原理学习总结