题目链接:http://poj.org/problem?id=3259

题目就是问你能否回到原点而且时间还倒回去了。题目中有些路中有单向的虫洞能让时间回到过去

所以只要将虫洞这条边的权值赋为负然后再判断有没有负环就行了。

#include <iostream>
#include <cstring>
using namespace std;
const int inf = 10001;
int f , n , m , w ,dis[1001] , counts;
struct TnT {
int u , v , weight;
}T[5200];
void relax(int u , int v , int weight) {
if(dis[v] > dis[u] + weight)
dis[v] = dis[u] + weight;
}
bool bellman_ford() {
for(int i = 1 ; i < n ; i++) {
for(int j = 1 ; j <= counts ; j++) {
relax(T[j].u , T[j].v , T[j].weight);
}
}
bool flag = true;
for(int i = 1 ; i <= counts ; i++) {
if(dis[T[i].v] > dis[T[i].u] + T[i].weight) {
flag = false;
break;
}
}
return flag;
}
int main() {
cin >> f;
int s , e , t;
while(f--) {
cin >> n >> m >> w;
counts = 0;
memset(dis , inf , sizeof(dis));
for(int i = 1 ; i <= m ; i++) {
cin >> s >> e >> t;
T[++counts].u = s , T[counts].v = e , T[counts].weight = t;
T[++counts].u = e , T[counts].v = s , T[counts].weight = t;
}
for(int i = 1 ; i <= w ; i++) {
cin >> s >> e >> t;
T[++counts].u = s , T[counts].v = e , T[counts].weight = -t;
}
if(bellman_ford()) {
cout << "NO" << endl;
}
else {
cout << "YES" << endl;
}
}
return 0;
}

最新文章

  1. angularjs 动态加载事件的另一种实现
  2. [SoapUI] 在SoapUI里获取Excel中多行数据并存入List
  3. es6 代码片段理解
  4. visual c++ 2010安装失败导致CRM2015安装失败
  5. echart------属性详细介绍
  6. Linux TTY框架【转】
  7. iOS 静态库和动态库的区别&amp;静态库的生成
  8. 20150511---Timer计时器(备忘)
  9. Angular实现数据绑定,它实现原理是什么?
  10. linux调度器 信息解读
  11. Stm32高级定时器(一)
  12. Josn转DataTable(转)
  13. mono 判断系统的网络是否可用
  14. c#之冒泡排序的三种实现和性能分析
  15. hashMap和treeMap
  16. eclipse版本选择
  17. jinja模板语法
  18. 【C#】Using的一个比较好的语言文字解释
  19. cekephp 事务处理
  20. WPF优化体验&lt;一&gt;(转)

热门文章

  1. Loadrunner参数(摘)
  2. redis过期策略与内存淘汰机制分析
  3. C# 10分钟完成百度语音技术(语音识别与合成)——入门篇
  4. MyBatis 二级缓存全详解
  5. android——Fragment
  6. 【java提高】(18)---静态内部类和非静态内部类
  7. 使用webpack---安装webpack和webpack-dev-server
  8. Linux下Kafka下载与安装教程
  9. VS引用文件出现黄色感叹号丢失文件,应该如何解决?
  10. 9406LaTeX公式