描述 Description
在一个神秘岛上,有N(1 <= N <= 500)个洞口,标号1…N,它们之间有M (1 <= M <= 2500) 条通道相连。神秘的竟然另外还有W (1 <= W <=200)条传说中的时间虫洞----当到达通道的另一端洞口时,竟然可以比进入的时间要早!
你当然想进行这样的时间之旅,希望从一个洞口s出发,经过几个通道,在比出发早些时候的时间回到洞口s。也许还能碰到自己呢,hehe
根据给定的地图,请判断能否实现这样的愿望。
输入格式 Input Format
第一行:一个整数 F (1 <= F <= 5),表示共有F组数据。(多组数据测试)
每组数据:
第1行:三个整数 N M W
   第2至M+1行:每行三个整数 (S, E, T),表示在S与E洞口之间有一个双向通道,通过需要T(0 <= T <= 10)
   样例输入 sample input
2
3 3 1
1 2 2
1 3 4
2 3 1
3 1 3
3 2 1
1 2 3
2 3 4
3 1 8
样例输出 sample output
NO
YES
这道题说想通过虫洞找到出发前的自己,那么首先想能走一圈回来到原点说明是一个环;
耗费比之前的小说明环是负环,那么显然只要有负环就可以满足题意,因为你可以通过负环不断地回到更早一点的时间,然后你就可以为所欲为了(手动滑稽);
咳咳,那么这道题数据量也不大,我们就可以每次直接用Bellman——Ford判断是否有负环,有负环的话就输出YES,没就输出NO。
嗯,记住YES和NO全大写,
我写的时候没看清,结果就被这个坑了QAQ

代码:

#include<bits/stdc++.h>#define MAXN 100010
#define INF 0x3f3f3fusing namespace std;struct node{int x,y,ne,z;
}e[MAXN];int lin[MAXN],len = 0;
inline void addedge(int x,int y,int z){e[++len].x = x;e[len].y = y;e[len].z = z;e[len].ne = lin[x]; lin[x] = len;
}int n,m,w;
int dis[MAXN];bool bellman_ford(){int flag = false;
//  dis[1] = 0;for(int i = 1; i <= n; ++i){flag = false;for(int j = 1; j <= len; ++j){int x = e[j].x, y = e[j].y, z = e[j].z;if(dis[y] > dis[x] + z){dis[y] = dis[x] + z;flag = true;} }if(!flag) return false;}return true;
}void clearr(){memset(lin,0,sizeof(lin));memset(dis,INF,sizeof(dis));len = 0;
}
int main()
{int t;scanf("%d",&t);while(t--){clearr();scanf("%d%d%d",&n,&m,&w);for(int i = 1; i <= m; ++i){int x,y,z;scanf("%d%d%d",&x,&y,&z);addedge(x,y,z);addedge(y,x,z);}for(int i = 1; i <= w; ++i){int x,y,z;scanf("%d%d%d",&x,&y,&z);addedge(x,y,-z);}if(bellman_ford()) printf("YES\n");else printf("NO\n");}return 0;
}

jzyzoj 1216 poj虫洞 3259 Bellman_Ford模板相关推荐

  1. 【POJ】3259 Wormholes

    题目链接:http://poj.org/problem?id=3259 题意:n个农场,m条双向路径,w条单向路径(虫洞).单向虫洞路径是负值.农夫想知道自己能不能看到自己(X). 题解:其实刚开始没 ...

  2. POJ 1287 Prim算法模板

    原题链接:POJ1287 解析:这题我用来练习Prim算法的,算是当作一个模板来看.以下代码有几点要说明的: 我使用了优先队列,并没有使用dist[u]数组来保存当前子树到 u 的最短距离,这样省去了 ...

  3. Drainage Ditches - poj 1273(网络流模板)

    题意:1是源点,m是汇点,求出来最大流量,没什么好说的就是练习最大流的模板题 ************************************************************* ...

  4. POJ 2240 Arbitrage Bellman_ford 判读是否存在正环

    和POJ1860差不多,就是用bellmanford判读是否存在正环,注意的是同种货币之间也可以交换,就是说:A货币换A货币汇率是2的情况也是存在的. #include<stdio.h> ...

  5. 艰难的选择_如何艰难地保护Kubernetes

    艰难的选择 Kubernetes is open-source, robust, and one of the most popular container orchestration platfor ...

  6. 凸包 初学 Andrew 和 Melkman (模板) 旋转卡(qia)壳(ke)

    凸包初学 定义: 给你n个散落的点,让你求出最小的凸多边形将所有的点包括起来,或者点在边上. 稳定凸包,不能再扩充,每条边都用3个点 必备知识: 会用叉积判断点与直线的关系(这里指 点在线的那一边, ...

  7. Linux等比数列脚本求和,POJ 1845 (约数和+二分等比数列求和)

    题目大意:A^B的所有约数和,mod 9901. 解题思路: ①整数唯一分解定理: 一个整数A一定能被分成:A=(P1^K1)*(P2^K2)*(P3^K3).....*(Pn^Kn)的形式.其中Pn ...

  8. ACM入门之【最短路】

    朴素Dijkstra模板 int g[N][N],dist[N],st[N],n; int Dijkstra() {memset(dist,0x3f,sizeof dist);dist[1]=0;fo ...

  9. ajax modelbinder,.NET Core 使用ModelBinder去掉所有参数的空格

    一.前言 通过各种姿势搜索都没搜到这方面的,唯一找到一个比较符合的,但是只适合简单类型,而且代码还没贴全,心累.. 然后查看官网和源码之后,发现继承并实现 IModelBinder和IModelBin ...

最新文章

  1. Spring内核研究-通过工厂注入
  2. 疫情影响海外净利润?海尔智家的回答出人意料
  3. git add 失效
  4. CaffeMFC:caffe.pb.h(2525): error C2059: syntax error : 'constant'
  5. 【转】Dubbo_与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
  6. python读取文件路径报invalid_关于Python读取文件的路径中斜杠问题
  7. 小球进盒子C语言,N个小球放进M个盒子算法-Go语言中文社区
  8. showdialog url访问页面_静态url在搜索引擎优化中的重要作用
  9. 特征提取与检测(一)---Harris与Shi-Tomasi角点检测原理
  10. error: two or more data types in declaration specifiers原因及解决方法
  11. educoder平台答案Java_不会吧!不会还有人没有《java程序设计》学堂在线答案吧...
  12. 怎么拷贝计算机桌面,电脑怎么拷贝软件
  13. linux系统编程--标准IO--fputs、fgets、fseek函数
  14. 台式计算机为什么数字输入不了,电脑数字键盘打不出数字怎么回事
  15. 猿辅导python大纲_数据解读独角兽企业“猿辅导”(第一部分)
  16. 涂抹果酱(状压dp)
  17. 微信小程序--优购商城项目(8)
  18. 解决org.junit.runners.model.InvalidTestClassError: Invalid test class ‘xxx‘ 1. No runnable methods
  19. 计算方法-数值积分与微分
  20. traceroute命令(unix)/tracert命令(windows)

热门文章

  1. JAVA面向对象编程(1)
  2. 让职场人早下班的PDF转Word技巧,速戳!
  3. 腾讯云Linux云服务器搭建网站
  4. r9 5900x配什么主板、显卡、散热
  5. 时钟频率,时钟周期他们的关系是什么?
  6. c语言任伟,任 伟
  7. Direct3D 11在windows7上提示创建d3d设备失败
  8. 数组循环向左移动k位的算法
  9. echart 人物关系图添加照片
  10. 一键安装Win7正版系统 Win7镜像系统2022