[BZOJ1715][Usaco2006 Dec]Wormholes 虫洞

2024-01-09 13:18

本文主要是介绍[BZOJ1715][Usaco2006 Dec]Wormholes 虫洞,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

[Usaco2006 Dec]Wormholes 虫洞

时间限制: 1 Sec 内存限制: 128 MB

题目描述

John在他的农场中闲逛时发现了许多虫洞。虫洞可以看作一条十分奇特的有向边,并可以使你返回到过去的一个时刻(相对你进入虫洞之前)。John的每个农场有M条小路(无向边)连接着N (从1..N标号)块地,并有W个虫洞。其中1<=N<=500,1<=M<=2500,1<=W<=200。 现在John想借助这些虫洞来回到过去(出发时刻之前),请你告诉他能办到吗。 John将向你提供F(1<=F<=5)个农场的地图。没有小路会耗费你超过10000秒的时间,当然也没有虫洞回帮你回到超过10000秒以前。

输入

  • Line 1: 一个整数 F, 表示农场个数。
  • Line 1 of each farm: 三个整数 N, M, W。
  • Lines 2..M+1 of each farm: 三个数(S, E, T)。表示在标号为S的地与标号为E的地中间有一条用时T秒的小路。
  • Lines M+2..M+W+1 of each farm: 三个数(S, E, T)。表示在标号为S的地与标号为E的地中间有一条可以使John到达T秒前的虫洞。
    输出
  • Lines 1..F: 如果John能在这个农场实现他的目标,输出”YES”,否则输出”NO”。

样例输入

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

样例输出

NO
YES

SPFA判负环即可,据说写成BFS会快不少,有时间补上…

varw:array[0..100000,1..3]of longint;dist:array[0..10000]of longint;p:array[0..100000,1..2]of longint;t:array[0..1000000]of longint;i,j,l:longint;a,b,c,x,y,tt,k,f,key,v:longint;n,m,start,finish:longint;head,tail:longint;
beginreadln(f);for l:=1 to f dobeginfor i:=1 to k dobeginw[i,1]:=0;w[i,2]:=0;w[i,3]:=0;end;readln(n,m,v); k:=n+1;for i:=1 to m dobeginreadln(a,b,c);w[k,1]:=b;w[k,2]:=c;if w[a,3]=0then w[a,3]:=kelse w[w[a,1],3]:=k;w[a,1]:=k;inc(k);w[k,1]:=a;w[k,2]:=c;if w[b,3]=0then w[b,3]:=kelse w[w[b,1],3]:=k;w[b,1]:=k;inc(k);end;for i:=1 to v dobeginreadln(a,b,c);w[k,1]:=b;w[k,2]:=-c;if w[a,3]=0then w[a,3]:=kelse w[w[a,1],3]:=k;w[a,1]:=k;inc(k);end;start:=1; finish:=n;for i:=1 to n dodist[i]:=100000;for i:=1 to tail dobeginp[i,1]:=0;p[i,2]:=0;end;dist[start]:=0;head:=1; tail:=2; t[1]:=start; p[start,1]:=1; p[start,2]:=1; key:=0;while head<tail dobeginx:=head; y:=tail;for i:=head to tail-1 dobeginif p[t[head],2]>=nthen begin key:=1; break; end;tt:=w[t[i],3];while tt<>0 dobeginif dist[t[i]]+w[tt,2]<dist[w[tt,1]]thenbegindist[w[tt,1]]:=dist[t[i]]+w[tt,2];if p[w[tt,1],1]=0then begin t[y]:=w[tt,1]; p[w[tt,1],1]:=1; inc(p[w[tt,1],2]); inc(y); end;end;tt:=w[tt,3];end;inc(x);p[t[i],1]:=0;end;head:=x; tail:=y;if key=1 then break;end;if key=0then writeln('NO')else writeln('YES');end;
end.

这篇关于[BZOJ1715][Usaco2006 Dec]Wormholes 虫洞的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/587232

相关文章

poj 3259 uva 558 Wormholes(bellman最短路负权回路判断)

poj 3259: 题意:John的农场里n块地,m条路连接两块地,w个虫洞,虫洞是一条单向路,不但会把你传送到目的地,而且时间会倒退Ts。 任务是求你会不会在从某块地出发后又回来,看到了离开之前的自己。 判断树中是否存在负权回路就ok了。 bellman代码: #include<stdio.h>const int MaxN = 501;//农场数const int

poj 3259 Wormholes 最短路

题目大意:虫洞问题,现在有n个点,m条边,代表现在可以走的通路,比如从a到b和从b到a需要花费c时间,现在在地上出现了w个虫洞,虫洞的意义就是你从a到b话费的时间是-c(时间倒流,并且虫洞是单向的),现在问你从某个点开始走,能回到从前 解题思路:其实给出了坐标,这个时候就可以构成一张图,然后将回到从前理解为是否会出现负权环,用bellman-ford就可以解出了

UVA558 - Wormholes(BellmanFord判负环)

UVA558 - Wormholes(BellmanFord判负环) UVA558 - Wormholes 题目大意:  有一个教授希望利用虫洞回到过去(还是从这个虫洞出来就到达了过去),给你虫洞形成的有向图,问教授能否回到过去。 解题思路:  利用BellmanFord判负环,如果不存在负环的话,那么最多经过N - 1次迭代就可以得到最短路,因为形成最短路最多N - 1个节点(起点不算

iOS:编译时出现no such file or directory:xxx以及use twice...filenames are used to distinguish private dec

简    注册  登录   添加关注 作者  婉卿容若 2016.04.29 11:22 写了21870字,被16人关注,获得了14个喜欢 iOS:编译时出现"no such file or directory:xxx"以及"use twice...filenames are used to distinguish private

UVa12227/LA4618 Wormholes

UVa12227/LA4618 Wormholes 题目链接题意分析测试数据AC 代码 题目链接   本题是2009年icpc欧洲区域赛西北欧赛区的j题   UVA - 12227 Wormholes 题意   你有一艘星际飞船,飞船运行速度为1,打算从坐标a旅行到坐标b(出发时刻为0),已知n个虫洞(0≤n≤ 50)的信息:入口点坐标s,出口点坐标e,形成时间t,穿过虫洞

POJ3259 Wormholes 【Bellmanford判断是否存在负回路】

很简单的bellmanford题目,这里比较详细:http://blog.csdn.net/lyy289065406/article/details/6645790 直接代码 #include <cstdio>#include <cstdlib>#include <iostream>#include <algorithm>#include <cstring>#include <cma

POJ - 3259 Wormholes(判断负环, Bellman Ford,SPFA)

虫洞能够时光倒流,判断能否在回到出发的位置的时候在出发的时候之前。(判断是否存在负环) 初学最短路,尝试着用了三种方法判断: 1、Bellman Ford (令d全部为0,仅用来判断负环)       OJ测试得157MS 2、Bellman Ford 结束后再来一轮松弛若松弛成功则存在负环。    235MS 3、Bellman Ford 用队列优化过的SPFA,判断是否存在一个点同队大

bzoj3012[Usaco2012 Dec]First! 一号单词

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3012 题目大意: 给n个字符串,问如果重新定义英文字符的顺序(就是重定义字典序),有哪些单词可能排在字典的第一名 举例来说,假设有四个单词:omm,moo,mom 和ommnom,如果奶牛定义o 在m 之前,则omm 可排第一,如果定义m 在o 之前,则mom 可排第一,但余下两个单词

spoj1182 Sorted bit squence/[USACO2003 Dec]Cow Queueing

题目链接:SPOJ的->http://www.spoj.com/problems/SORTBIT/ 题目大意: 约翰给每头奶牛用一个数字编号,这些奶牛在集合时,会将自己编号转换成二进制表示,并按照以下规则排队: • 首先,编号的二进制中1 出现次数较少的排在队伍的前面; • 其次,如果1 的数量一样多,那么编号较小的排在前面; 举个例子,从4 到15,有12 个数字,顺序应该是 100; 10

[USACO2003 Dec]Cow Queueing数数的梦 (基础水数位DP带注释!)

题目链接:http://acm.tju.edu.cn/toj/showp2839.html(真的找不到链接了) 题目大意: 给你一个范围A~B,求出在整数A 到B之间,0到9这十个数字,分别出现了多少次? 1≤A,B≤10^18 样例输入  129 137 样例输出  1 10 2 9 1 1 1 1 0 1 题解: 数位DP 我的第一道数位DP。。尽管是基础水题但是搞了好久