POJ 3259 Bellman_Ford算法
额。关键是读题。反正我是看了解题报告才知道意思的。给你n个点。m条路。双向的。耗费时间。w个虫洞。单向的。时间为负值。问你是否可以从某一点返回看到之前的自己。即为判断是不是有负环。用Bellman_Ford算法。
分分钟打完。排了好久的bug。还是循环那里j和i傻傻的分不清楚。
附代码:
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#define maxn 0x1f1f1f1f
using namespace std;
int n, m, w; //定点数 m+w是边数
struct Edge
{
int u, v, t;
} edge[6000];
int low[600];
int tot;
bool Bellman_Ford()
{
memset(low, maxn, sizeof(maxn));
//for (int i=2; i<=n; ++i)
// low[i] = maxn;
low[1] = 0;
for (int i=1; i<n; i++)
{
bool flag = false;
for (int j=0; j<tot; ++j)
{
if (low[edge[j].v] > low[edge[j].u] + edge[j].t)
{
low[edge[j].v] = low[edge[j].u] + edge[j].t;
flag = true;
}
}
if (!flag) break;
}
for (int i=0; i<tot; ++i)
{
if (low[edge[i].v] > low[edge[i].u] + edge[i].t)
return true; // 存在负环
}
return false;
}
int main()
{
int t;
scanf("%d", &t);
while (t--)
{
scanf("%d%d%d", &n, &m, &w);
tot = 0;
int u, v, t;
for (int i=0; i<m; ++i)
{
scanf("%d%d%d", &u, &v, &t);
edge[tot].u = u;
edge[tot].v = v;
edge[tot++].t = t;
edge[tot].u = v;
edge[tot].v = u;
edge[tot++].t = t;
}
for (int i=0; i<w; ++i)
{
scanf("%d%d%d", &u, &v, &t);
edge[tot].u = u;
edge[tot].v = v;
edge[tot++].t = -t;
}
bool flag = Bellman_Ford();
if (flag) printf("YES\n");
else printf("NO\n");
}
return 0;
}
POJ 3259 Bellman_Ford算法的更多相关文章
- poj 3259 (Bellman_Ford判断负环)
题意:John的农场里n块地,m条路连接两块地,k个虫洞,虫洞是一条单向路,不但会把你传送到目的地,而且时间会倒退Ts.我们的任务是知道会不会在从某块地出发后又回来,看到了离开之前的自己. 思路:虫洞 ...
- Wormholes - poj 3259 (Bellman-Ford算法)
Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 34934 Accepted: 12752 Description W ...
- POJ 3259 Wormholes (Bellman_ford算法)
题目链接:http://poj.org/problem?id=3259 Wormholes Time Limit: 2000MS Memory Limit: 65536K Total Submis ...
- 最短路(Bellman_Ford) POJ 3259 Wormholes
题目传送门 /* 题意:一张有双方向连通和单方向连通的图,单方向的是负权值,问是否能回到过去(权值和为负) Bellman_Ford:循环n-1次松弛操作,再判断是否存在负权回路(因为如果有会一直减下 ...
- poj - 3259 Wormholes (bellman-ford算法求最短路)
http://poj.org/problem?id=3259 农夫john发现了一些虫洞,虫洞是一种在你到达虫洞之前把你送回目的地的一种方式,FJ的每个农场,由n块土地(编号为1-n),M 条路,和W ...
- POJ 3259 Wormholes(bellman_ford,判断有没有负环回路)
题意:John的农场里field块地,path条路连接两块地,hole个虫洞,虫洞是一条单向路,不但会把你传送到目的地,而且时间会倒退Ts.我们的任务是知道会不会在从某块地出发后又回来,看到了离开之前 ...
- POJ 3259 Wormholes(最短路,判断有没有负环回路)
Wormholes Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 24249 Accepted: 8652 Descri ...
- ACM: POJ 3259 Wormholes - SPFA负环判定
POJ 3259 Wormholes Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%lld & %llu ...
- ShortestPath:Wormholes(POJ 3259)
田里的虫洞 题目大意:就是这个农夫的田里有一些虫洞,田有很多个点,点与点之间会存在路,走过路需要时间,并且这些点存在虫洞,可以使农夫的时间退回到时间之前,问你农夫是否真的能回到时间之前? 读完题:这一 ...
随机推荐
- 20145335郝昊《网络攻防》Exp 4 利用nmap扫描
20145335郝昊<网络攻防>Exp 4 利用nmap扫描 实验原理 使用msf辅助模块,nmap来扫描发现局域网中的主机ip 实验步骤 首先使用命令创建一个msf所需的数据库 serv ...
- Go第十篇之反射
反射是指在程序运行期对程序本身进行访问和修改的能力.程序在编译时,变量被转换为内存地址,变量名不会被编译器写入到可执行部分.在运行程序时,程序无法获取自身的信息. 支持反射的语言可以在程序编译期将变量 ...
- vim的几个插件mark.vim ctrlp.vim等
开发过程中, 保证语义的前提下, 尽量使用 短的 变量名: 如: 用 $map来代替 $condition, 因为在书写长的变量名的时候, 容易写错, 而排查错误, 还不容易找出来. vim在浏览和排 ...
- HDU3085(双向BFS+曼哈顿距离)题解
Nightmare Ⅱ Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
- POJ3436 ACM Computer Factory(最大流/Dinic)题解
ACM Computer Factory Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8944 Accepted: 3 ...
- Winform中使用折叠窗口
使用此处的控件 http://www.codeproject.com/Articles/18401/XPanderControls 注意事项 使用之前需要先添加winform自带的toolStripC ...
- dubbo 实战总结
1,出现重复调用.因为有重试机制,可以改为异步调用或者幂等操作.
- Pc端css初始化
@charset "UTF-8"; /**css初始化**/ body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd ...
- 在线js编程网站 精品版
https://jsfiddle.net/ 引自:http://www.ykmimi.com/tools.html
- HDU 1686 Oulippo
http://acm.hdu.edu.cn/showproblem.php?pid=1686 题意:给定一个文本串和给定一个模式串,求文本串中有几个模式串. 思路:直接套用KMP模板. #includ ...