Wormholes

题目描述

教学楼里有很多教室,这些教室由双向走廊连接。另外,还存在一些单向的秘密通道,通过它们可以回到过去。现在有 N (1 ≤ N ≤ 500) 个教室,编号 1..NM (1 ≤ M ≤ 2500) 条走廊,和 W (1 ≤ W ≤ 200) 条秘密通道。

DY在养猫之余,还是一个时间旅行爱好者。她希望从一间教室出发,经过一些走廊和秘密通道,回到她出发之前的某个时间。

共有F (1 ≤ F ≤ 5) 组数据。对每组数据,判断DY是否有回到过去的可能性。不存在耗时超过10,000秒的走廊,且不存在能带DY回到10,000秒之前的秘密通道。

输入格式

首先是一个整数F,表示接下来会有F组数据。

每组数据第1行:分别是三个空格隔开的整数:N,M和W

第2行到M+1行:三个空格分开的数字(S,E,T)描述双向走廊:从S到E需要耗费T秒。两个教室可能由一个以上的路径来连接。

第M +2到M+ W+1行:三个空格分开的数字(S,E,T)描述秘密通道:从S到E可以使时间倒流T秒。

输出格式

F行,每行对应一组数据。 每组数据输出单独的一行,” YES”表示能满足要求,”NO”表示不能满足要求。

输入样例

  1. 2
  2. 3 3 1
  3. 1 2 2
  4. 1 3 4
  5. 2 3 1
  6. 3 1 3
  7. 3 2 1
  8. 1 2 3
  9. 2 3 4
  10. 3 1 8

输出样例

  1. NO
  2. YES

题目链接

https://vjudge.net/problem/POJ-3259

题目的要求是回到她出发之前的某个时间,即从i再次走到i时,所用时间为负数,Floyd算法算出每两个教室的时间,再判断一下从i再次走到i时的所用时间是否<0即可

AC代码

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <fstream>
  4. #include <algorithm>
  5. #include <cmath>
  6. #include <deque>
  7. #include <vector>
  8. #include <queue>
  9. #include <string>
  10. #include <cstring>
  11. #include <map>
  12. #include <stack>
  13. #include <set>
  14. #include <sstream>
  15. #define IOS ios_base::sync_with_stdio(0); cin.tie(0)
  16. #define Mod 1000000007
  17. #define eps 1e-6
  18. #define ll long long
  19. #define INF 0x3f3f3f3f
  20. #define MEM(x,y) memset(x,y,sizeof(x))
  21. #define Maxn 500+5
  22. #define P pair<int,int>
  23. using namespace std;
  24. int N,M,W;
  25. int S,E,T;
  26. int d[Maxn][Maxn];
  27. void init()
  28. {
  29. //i到j的距离为INF
  30. MEM(d,INF);
  31. for(int i=; i<=N; i++)//自己到自己的距离为0
  32. d[i][i]=;
  33. }
  34. bool Floyd()//Floyd算法求最短路
  35. {
  36. int i,j,k;
  37. for(k=; k<=N; k++)
  38. {
  39. for(i=; i<=N; i++)
  40. {
  41. for(j=; j<=N; j++)
  42. {
  43. if(d[i][j]>d[i][k]+d[k][j])//(用min会超时)
  44. d[i][j]=d[i][k]+d[k][j];
  45. }
  46. if(d[i][i]<)//转了一圈,回到这里时,时间为负数,则回到她出发之前的某个时间
  47. return ;
  48. }
  49. }
  50. return ;
  51. }
  52. int main()
  53. {
  54. IOS;
  55. int F;
  56. cin>>F;
  57. while(F--)
  58. {
  59. cin>>N>>M>>W;
  60. init();
  61. for(int i=; i<M; i++)
  62. {
  63. int x,y,z;
  64. cin>>x>>y>>z;
  65. if(z<d[x][y])
  66. d[x][y]=d[y][x]=z;//走廊双向
  67. }
  68. for(int i=; i<W; i++)
  69. {
  70. int x,y,z;
  71. cin>>x>>y>>z;
  72. d[x][y]=-z;//秘密通道单=向
  73. }
  74. if(Floyd())
  75. cout<<"YES"<<endl;
  76. else
  77. cout<<"NO"<<endl;
  78. }
  79. return ;
  80. }

【POJ - 3259】Wormholes(最短路 Floyd算法)的更多相关文章

  1. poj 3259 Wormholes(最短路 Bellman)

    题目:http://poj.org/problem?id=3259 题意:一个famer有一些农场,这些农场里面有一些田地,田地里面有一些虫洞,田地和田地之间有路,虫洞有这样的性质: 时间倒流.问你这 ...

  2. 【原创】POJ 3259 Wormholes(Bellman-Ford) && 简介Bellman-Ford算法

    [原创] 题目大意 John有N个农场,一共有M条边,在农场上出现了W个虫洞(W是一条边),其中M是双向普通边,W是单向虫洞边.John穿行于农场之间每经过一条边(S到E)的时间为+T,每经过虫洞会时 ...

  3. POJ 3259 Wormholes 最短路+负环

    原题链接:http://poj.org/problem?id=3259 题意 有个很厉害的农民,它可以穿越虫洞去他的农场,当然他也可以通过道路,虫洞都是单向的,道路都是双向的,道路会花时间,虫洞会倒退 ...

  4. POJ 3259 Wormholes (最短路)

    Wormholes Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 34302   Accepted: 12520 Descr ...

  5. poj - 3259 Wormholes (bellman-ford算法求最短路)

    http://poj.org/problem?id=3259 农夫john发现了一些虫洞,虫洞是一种在你到达虫洞之前把你送回目的地的一种方式,FJ的每个农场,由n块土地(编号为1-n),M 条路,和W ...

  6. 最短路(Bellman_Ford) POJ 3259 Wormholes

    题目传送门 /* 题意:一张有双方向连通和单方向连通的图,单方向的是负权值,问是否能回到过去(权值和为负) Bellman_Ford:循环n-1次松弛操作,再判断是否存在负权回路(因为如果有会一直减下 ...

  7. ACM: POJ 3259 Wormholes - SPFA负环判定

     POJ 3259 Wormholes Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu   ...

  8. POJ 3259 Wormholes(最短路径,求负环)

    POJ 3259 Wormholes(最短路径,求负环) Description While exploring his many farms, Farmer John has discovered ...

  9. 【ACM程序设计】求短路 Floyd算法

    最短路 floyd算法 floyd是一个基于贪心思维和动态规划思维的计算所有点到所有点的最短距离的算法. P57-图-8.Floyd算法_哔哩哔哩_bilibili 对于每个顶点v,和任一顶点对(i, ...

随机推荐

  1. Bean property 'transactionManagerBeanName' is not writable or has an invalid set

    [2017-02-07 11:38:48,458]-[localhost-startStop-1]-[org.springframework.beans.factory.support.Default ...

  2. Greenplum客户端访问控制

    1. 问题描述 Greenplum默认是对客户端不开放的,即客户端要访问Greenplum数据库,需要首先开通权限. 2. 解决方案: 2.1.安装greenplum-cc-web控制台. ​ Gp的 ...

  3. Excel中vlookup函数使用

    https://baijiahao.baidu.com/s?id=1594684818733205984&wfr=spider&for=pc

  4. Spring Boot 整合 Shiro实现认证及授权管理

    Spring Boot Shiro 本示例要内容 基于RBAC,授权.认证 加密.解密 统一异常处理 redis session支持 介绍 Apache Shiro 是一个功能强大且易于使用的Java ...

  5. [原创]OpenvSwitch安装

    一.安装环境: ubuntu-12.04-64bit 二.使用root权限,安装所需软件: apt-get install build-essential apt-get install openss ...

  6. Python 爬虫:豆瓣电影Top250,包括电影导演、类型、年份、主演

    结果输出到文本文件中. import codecs import requests from bs4 import BeautifulSoup headers={'User-Agent': 'Mozi ...

  7. Intel FPGA 专用时钟引脚是否可以用作普通输入,输出或双向IO使用?

    原创 by DeeZeng FPGA 的 CLK pin 是否可以用作普通输入 ,输出或双向IO 使用?    这些专用Clock input pin 是否可以当作 inout用,需要看FPGA是否支 ...

  8. vs2010编译zapline-zapline.systemoptimization 注释工程中的//#define abs(value) (value >= 0 ? value : -(value))即可

    vs2010编译zapline-zapline.systemoptimization-8428e72c88e0.zip出错 1>d:\program files (x86)\microsoft ...

  9. springboot基础(随笔)

    <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot ...

  10. IBM RAD中集成Websphere启动后无法debug解决办法

    问题描述: IBM Rational Application Developer for WebSphere软件在启动WebSphere的时候无法以debug模式启动,debug启动后显示为start ...