博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 3259 Wormholes ([kuangbin带你飞]专题四 最短路练习)
阅读量:5260 次
发布时间:2019-06-14

本文共 2828 字,大约阅读时间需要 9 分钟。

Description

While exploring his many farms, Farmer John has discovered a number of amazing wormholes. A wormhole is very peculiar because it is a one-way path that delivers you to its destination at a time that is BEFORE you entered the wormhole! Each of FJ's farms comprises N (1 ≤ N ≤ 500) fields conveniently numbered 1..NM (1 ≤ M ≤ 2500) paths, and W (1 ≤ W ≤ 200) wormholes.

As FJ is an avid time-traveling fan, he wants to do the following: start at some field, travel through some paths and wormholes, and return to the starting field a time before his initial departure. Perhaps he will be able to meet himself :) .

To help FJ find out whether this is possible or not, he will supply you with complete maps to F (1 ≤ F ≤ 5) of his farms. No paths will take longer than 10,000 seconds to travel and no wormhole can bring FJ back in time by more than 10,000 seconds.

Input

Line 1: A single integer, 
F
F farm descriptions follow. 
Line 1 of each farm: Three space-separated integers respectively: 
N
M, and 
W 
Lines 2.. 
M+1 of each farm: Three space-separated numbers ( 
S
E
T) that describe, respectively: a bidirectional path between 
S and 
E that requires 
T seconds to traverse. Two fields might be connected by more than one path. 
Lines 
M+2.. 
M
W+1 of each farm: Three space-separated numbers ( 
S
E
T) that describe, respectively: A one way path from 
S to 
E that also moves the traveler back 
T seconds.

Output

Lines 1.. 
F: For each farm, output "YES" if FJ can achieve his goal, otherwise output "NO" (do not include the quotes).

Sample Input

23 3 11 2 21 3 42 3 13 1 33 2 11 2 32 3 43 1 8

Sample Output

NOYES

Hint

For farm 1, FJ cannot travel back in time. 
For farm 2, FJ could travel back in time by the cycle 1->2->3->1, arriving back at his starting location 1 second before he leaves. He could start from anywhere on the cycle to accomplish this.

题目大意:

农夫 FJ 有 N 块田地【编号 1...n】 (1<=N<=500)
        田地间有 M 条路径 【
双向】(1<= M <= 2500)
        同时有 W 个孔洞,可以回到以前的一个时间点【
单向】(1<= W <=200)
        问:FJ 是否能在田地中遇到以前的自己

算法:flod算法

思路: 田地间的双向路径加边,权值为
        孔洞间的单向路径加边,权值为【可以回到以前】
        判断有向图是否存在负环
      因为如果存在了负数环,时间就会不停的减少,
      那么 FJ 就可以回到以前更远的地方,肯定能遇到以前的自己的

#include
#include
#include
using namespace std;const int maxn = 510;const int inf = 9999999;struct Node{ int u,v; int t;}E[2500*2+200+10];int d[maxn];int c;int n,m,w;bool flod(){ for(int i=1;i
d[u]+t){ //g跟新每个点时间 d[v]=d[u]+t; flag = true; } } if(!flag) return false; //如果不能跟新则不存在负边 } for(int i=0;i
d[E[i].u]+E[i].t) return true; } return false;}int main(){ int f; scanf("%d",&f); while(f--){ scanf("%d%d%d",&n,&m,&w); c=0; for(int i=0;i
 

转载于:https://www.cnblogs.com/Double-LL/p/6658885.html

你可能感兴趣的文章
HTML <select> 标签
查看>>
类加载机制
查看>>
tju 1782. The jackpot
查看>>
湖南多校对抗赛(2015.03.28) H SG Value
查看>>
hdu1255扫描线计算覆盖两次面积
查看>>
hdu1565 用搜索代替枚举找可能状态或者轮廓线解(较优),参考poj2411
查看>>
bzoj3224 splay板子
查看>>
程序存储问题
查看>>
Mac版OBS设置详解
查看>>
优雅地书写回调——Promise
查看>>
android主流开源库
查看>>
AX 2009 Grid控件下多选行
查看>>
PHP的配置
查看>>
Struts框架----进度1
查看>>
Round B APAC Test 2017
查看>>
MySQL 字符编码问题详细解释
查看>>
Ubuntu下面安装eclipse for c++
查看>>
让IE浏览器支持CSS3圆角属性的方法
查看>>
巡风源码阅读与分析---nascan.py
查看>>
LiveBinding应用 dataBind 数据绑定
查看>>