POJ 3259

农夫约翰在探索他的许多农场,发现了一些惊人的虫洞。虫洞是很奇特的,因为它是一个单向通道,可让你进入虫洞的前达到目的地!他的N(1≤N≤500)个农场被编号为1..N,之间有M(1≤M≤2500)条路径,W(1≤W≤200)个虫洞。FJ作为一个狂热的时间旅行的爱好者,他要做到以下几点:开始在一个区域,通过一些路径和虫洞旅行,他要回到最开时出发的那个区域出发前的时间。也许他就能遇到自己了:)。为了帮助FJ找出这是否是可以或不可以,他会为你提供F个农场的完整的映射到(1≤F≤5)。所有的路径所花时间都不大于10000秒,所有的虫洞都不大于万秒的时间回溯。

输入

第1行:一个整数F表示接下来会有F个农场说明。

每个农场第一行:分别是三个空格隔开的整数:N,M和W

第2行到M+1行:三个空格分开的数字(S,E,T)描述,分别为:需要T秒走过S和E之间的双向路径。两个区域可能由一个以上的路径来连接。

第M +2到M+ W+1行:三个空格分开的数字(S,E,T)描述虫洞,描述单向路径,S到E且回溯T秒。

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

输出

F行,每行代表一个农场

每个农场单独的一行,” YES”表示能满足要求,”NO”表示不能满足要求。

NO
YES

思路很简单,只要判断是否存在负权环就行了,用floyd一次搞定!(小心min函数,我因为加了min函数而超时了),详情见注释

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
int map[505][505],n,m,k,num=0;
int floyd()
{int i,j,k,f=0;for(k=1;k<=n;k++)for(i=1;i<=n;i++){for(j=1;j<=n;j++){int t=map[i][k]+map[k][j];if(map[i][j]>t)map[i][j]=t;/*map[i][j]=min(map[i][j],map[i][k]+map[k][j]);*/}if(map[i][i]<0)return 1;}return f;
}
int main()
{int t;scanf("%d",&t);while(t--){int i,j,a,b,c;scanf("%d%d%d",&n,&m,&k);memset(map,0x3f3f3f3f,sizeof(map));for(i=1;i<=n;i++)map[i][i]=0;for(i=1;i<=m;i++){scanf("%d%d%d",&a,&b,&c);if(c<map[a][b])map[a][b]=map[b][a]=c;}for(i=1;i<=k;i++){scanf("%d%d%d",&a,&b,&c);map[a][b]=-c;}num++;int f=floyd();if(!f)printf("NO\n");else printf("YES\n");}return 0;
}

poj3259 Wormholes floyd求负环相关推荐

  1. poj3259 Wormholes(spfa判负环)

    题意:给m条路(S,E,T)代表点S.E之间双向边权重为T,紧接着给W个虫洞(S,E,T)代表S到E的有向边可以回到T秒前即权重为-T,问能不能通过虫洞看到看到初始的自己,即能不能回到初始点所在的时间 ...

  2. 算法基础课-搜索与图论-spfa-AcWing 852. spfa判断负环:spfa求负环板子

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: dist[x] 表示从源点到x点的最短距离. spfa算法求最短路的算法步骤: 初始化一个队列,将起点入队. 取出队头元素t,遍历它 ...

  3. 算法提高课-图论-负环-AcWing 904. 虫洞:spfa求负环裸题

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 负环:负环是这样的一个环,该环上的边权之和是负数. 存在负环的话,会对我们求最短路造成障碍,因为绕着这个负环转无数次,最短路越来越小 ...

  4. 【POJ-3259】 Wormholes(判负环,spfa算法)

    题干: While exploring his many farms, Farmer John has discovered a number of amazing wormholes. A worm ...

  5. Wormholes——Bellman-Ford判断负环

    [题目描述] While exploring his many farms, Farmer John has discovered a number of amazing wormholes. A w ...

  6. 图论--DFS-SPFA求负环

    模板:洛谷P3385 由于DFS-SPFA可以在找到负环后及时退出,所以不会像BFS-SPFA那样TLE. 代码: #include<bits/stdc++.h> using namesp ...

  7. POJ 3259 Wormholes SPFA判负环

    思路:SPFA判负环 数组不要开太小-- (后面附一组测试数组) // by SiriusRen #include <queue> #include <cstdio> #inc ...

  8. [HNOI2009]最小圈 (二分答案+负环)

    题面:[HNOI2009]最小圈 题目描述: 考虑带权的有向图\(G=(V,E)\)以及\(w:E\rightarrow R\),每条边\(e=(i,j)(i\neq j,i\in V,j\in V) ...

  9. 算法提高课-图论-负环-AcWing 361. 观光奶牛:spfa判正环、负环、01分数规划、二分

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 题目要求ΣfiΣgi\frac{\Sigma{f_i}}{\Sigma{g_i}}Σgi​Σfi​​的最大值,这种问题称为01分数规 ...

  10. bzoj4773 负环

    Description 在忘记考虑负环之后,黎瑟的算法又出错了.对于边带权的有向图 G = (V, E),请找出一个点数最小的环,使得 环上的边权和为负数.保证图中不包含重边和自环. Input 第1 ...

最新文章

  1. 101个脚本之linux回收站
  2. 四个大点,搞懂 Redis 到底快在哪里?
  3. FZU 1914 Funny Positive Sequence
  4. .NET Core 3.0 中的数据库驱动框架 System.Data
  5. count慢的问题解决
  6. 初创公司怎么做销售数据分析_为什么您的初创企业需要数据科学来解决这一危机...
  7. Hive设计和体系结构
  8. 防注入php 留言板代码,简单的 php 防注入代码
  9. 部署腾讯云(CentOS6.6版本,jdk1.7+tomcat8+mysql)
  10. 我与前端之间不得不说的三天两夜之html基础
  11. QT 按钮(4种样式)
  12. 第一届佳木斯大学程序设计校赛题解
  13. 一阶线性微分方程的初等积分法例题
  14. 如何将IE11降级到IE10
  15. 华为手机一键解锁工具箱下载 | 华为手机解BL锁软件: 支持解锁bootloader,刷写recovery功能
  16. h5难做吗_H5如何制作?制作H5是否很难?
  17. Python运维(六)--系统监控psutil、数据报scapy、扫描nmap
  18. python中文分词算法_基于Python语言的中文分词技术的研究
  19. 惠普微型计算机 使用教程,惠普打印机怎么用 打印机使用注意事项【图文教程】...
  20. 基于51单片机万年历

热门文章

  1. 计算机重启打印机无法使用,为什么打印机在电脑重启后就不能用了并且也无法添加?-win7添加打印机...
  2. FEEDSKY获得风险投资
  3. 图标搜索引擎:Findicons
  4. 大家好,我是练习时长两年半的LeetCode爱好者,喜欢唱跳rap
  5. 基于面积对比法的图形匹配
  6. ip 华三secondary_H3C交换机配置端口IP sub实例
  7. Ordinal Regression 年龄估计(CVPR2016)
  8. 基于微信小程序的培训机构管理系统毕业设计源码
  9. 神奇的泡泡java游戏,抖音挤泡泡游戏叫什么名字 抖音上很火的减压游戏介绍
  10. TTF、TOF、WOFF 和 WOFF2 的相关概念