poj3259 Wormholes(Bellman-Ford判断负圈)
https://vjudge.net/problem/POJ-3259
一开始理解错题意了,以为从A->B一定得走路,B->A一定得走虫洞。emmm其实回来的时候可以路和虫洞都可以走,只要最终结果满足就好。
发现了这一点,我终于愉快地把我的floyd从wa改到了tle~
正解:用bellman-ford判断有无负圈。
- #include<iostream>
- #include<cstdio>
- #include<queue>
- #include<cstring>
- #include<algorithm>
- #include<cmath>
- #include<stack>
- #define lson l, m, rt<<1
- #define rson m+1, r, rt<<1|1
- #define IO ios::sync_with_stdio(false);cin.tie(0);
- #define INF 0x3f3f3f3f
- typedef unsigned long long ll;
- using namespace std;
- int a[][], dist[];
- int k, kase, n, m, w, s, e, t;
- typedef struct{
- int from, to;
- int cost;
- }Node;
- Node node[];
- int solve()
- {
- memset(dist, , sizeof(dist));//可以检查出所有的负圈
- for(int i = ; i <= n; i++){
- for(int j = ; j < *m+w; j++){
- Node e = node[j];
- if(dist[e.to] > dist[e.from]+e.cost){
- dist[e.to] = dist[e.from]+e.cost;
- if(i == n) return ;
- }
- }
- }
- return ;
- }
- int main()
- {
- scanf("%d", &kase);
- while(kase--){
- scanf("%d%d%d", &n, &m, &w);
- for(int i = ; i < *m; i++){
- scanf("%d%d%d", &s, &e, &t);//路是双向的
- node[i].from = s; node[i].to = e;
- node[i].cost = t;
- i++;
- node[i].from = e; node[i].to = s;
- node[i].cost = t;
- }
- for(int i = *m; i < *m+w; i++){
- scanf("%d%d%d", &s, &e, &t);//虫洞是单向的
- node[i].from = s; node[i].to = e;
- node[i].cost = -t;
- }
- if(solve()) cout << "YES" << endl;
- else cout << "NO" << endl;
- }
- return ;
- }
poj3259 Wormholes(Bellman-Ford判断负圈)的更多相关文章
- uva 558 - Wormholes(Bellman Ford判断负环)
题目链接:558 - Wormholes 题目大意:给出n和m,表示有n个点,然后给出m条边,然后判断给出的有向图中是否存在负环. 解题思路:利用Bellman Ford算法,若进行第n次松弛时,还能 ...
- AOJ GRL_1_C: All Pairs Shortest Path (Floyd-Warshall算法求任意两点间的最短路径)(Bellman-Ford算法判断负圈)
题目链接:http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=GRL_1_C All Pairs Shortest Path Input ...
- 【算法】Floyd-Warshall算法(任意两点间的最短路问题)(判断负圈)
求解所有两点间的最短路问题叫做任意两点间的最短路问题. 可以用动态规划来解决, d[k][i][j] 表示只用前k个顶点和顶点i到顶点j的最短路径长度. 分两种情况讨论: 1.经过顶点k, d[k] ...
- 【算法】Bellman-Ford算法(单源最短路径问题)(判断负圈)
单源最短路问题是固定一个起点,求它到其他所有点的最短路的问题. 算法: 设 d[i] 表示 起点 s 离点 i 的最短距离. [1.初始化] 固定起点s,对所有的点 , 如果 i = s , ...
- POJ-3259 Wormholes (ballman_ford 判负环)
ballman_ford 是对单源点到任意点最短路的处理方法(可以含负权边). 对所有边进行n-1次循环,(n为点得个数),如果此时源点到这条边终点的距离 大于 源点到这条边起点的距离加上路得权值就进 ...
- POJ 3259 Wormholes【bellman_ford判断负环——基础入门题】
链接: http://poj.org/problem?id=3259 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=22010#probl ...
- poj1860 兑换货币(bellman ford判断正环)
传送门:点击打开链接 题目大意:一个城市有n种货币,m个货币交换点,你有v的钱,每个交换点只能交换两种货币,(A换B或者B换A),每一次交换都有独特的汇率和手续费,问你存不存在一种换法使原来的钱更多. ...
- POJ3259 Wormholes 【spfa判负环】
题目链接:http://poj.org/problem?id=3259 Wormholes Time Limit: 2000MS Memory Limit: 65536K Total Submis ...
- poj 3259 Wormholes【spfa判断负环】
Wormholes Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 36729 Accepted: 13444 Descr ...
随机推荐
- Oracle Client(客户端) 安装与配置
因为工作需要,需要通过本地oracle客户端将数据导入到远程服务器上的oracle数据库中.从csdn下了很多oracle客户端,都是属于精简版,缺少imp.exe文件,造成无法导入数据.所以最终从o ...
- CentOS6—HAProxy安装与配置
概述 Haproxy下载地址:http://pkgs.fedoraproject.org/repo/pkgs/haproxy/ 关闭SElinux.配置防火墙 1.vi /etc/selinux/co ...
- vue中methods一个方法调用另外一个方法
转自http://blog.csdn.net/zhangjing1019/article/details/77942923 vue在同一个组件内: methods中的一个方法调用methods中的另外 ...
- NOI2018Day2T1 屠龙勇士 set 扩展欧几里德 中国剩余定理
原文链接https://www.cnblogs.com/zhouzhendong/p/NOI2018Day2T1.html 题目传送门 - 洛谷P4774 题意 题解 首先我们仔细看一看样例可以发现如 ...
- python josn包
Python josn包中的编码与解码方法 对于Python数据类型进行编码解码 json.dumps 对python的数据类型进行json格式编码 :(将dict转为json格式) eg: imp ...
- js获取元素提示信息
js获取元素提示信息 var date=$("#date").attr('placeholder'); js修改元素的提示信息 $("#date").attr( ...
- 为表格动态添加一行,miniui组件无效
想要使用miniui实现这样的功能,点击按钮,在一个<td>中动态添加一个miniui输入框和一个按钮,结果miniui的样式无法渲染,请问这种问题可以怎么解决代码如下: <tr&g ...
- ceil()函数的应用-hdu1065
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1065 题目描述: floor(x) is the largest integer not great ...
- netty简单NIO模型
首先是使用java原生nio类库编写的例子,开发一套nio框架不简单,所以选择了netty,该例完成后,是netty举例. package com.smkj.netty; public class T ...
- Splay的初步学习
具体是啥,qwq 有时间再补吧,贴一下代码: #include<iostream> #include<cstdio> #include<cstring> #incl ...