Codevs 1961 躲避大龙
你早上起来,慢悠悠地来到学校门口,发现已经是八点整了!(这句话里有一个比较重要的条件)
学校共有N个地点,编号为1~N,其中1号为学校门口(也就是你现在所处的位置),2号为你的教室(也就是你的目的地)。这些地点之间有M条双向道路,对于第i条道路,为了不引起值周队老师的怀疑,你通过它的时间须恰好为Ti秒。这个数可能为负数,意义为时间倒流。
不过,即使没有引起怀疑,值周队也布下了最后一道防线:大龙会在教室处不定期出现。当然,你也了解大龙的习性:当前时间的秒数越小,大龙出现的概率就越低,例如:8:13:06这一时刻的秒数是06,就要比8:12:57这个时刻更加安全。
现在的问题是,在不引起怀疑的前提下,最安全的到达时刻的秒数是多少。如果学校门口到教室没有路(-_-||),请输出60。
注意,你可以选择在途中的任何时候经过教室,而不结束“旅程”,具体见样例。
第一行为两个整数,N和M,意义在上面已经说过了。
第2行~第M+1行,每行代表一条道路。第i+1行代表第i条道路,这一行有3个整数,Ai,Bi,Ti,表示Ai号地点与Bi号地点有一条双向道路,通过它的时间必须为Ti秒。
只有一行,为最安全的到达时刻的秒数。
Input1:
2 1
2 1 54
Input2:
3 3
1 2 26
1 3 17
2 3 -9
Input3:
3 1
1 3 110
Input4:
2 2
1 2 7
2 1 9
Input5:
2 2
1 2 3
1 1 1
Input6:
2 2
1 2 9
1 2 11
Output1:
06
Output2:
00
Output3:
60
Output4:
01
Output5:
00
Output6:
01
样例1的说明:一共只有两个地点(多么福利的数据啊),也只有一条道路,耗时为54秒。最优方案为,经过这个道路9次,耗时486秒,即8分06秒,于8:08:06到达教室。当然,最优方案不唯一。
样例2的说明:走1->3->1->2,用时17+17+26,于8:01:00到达;或走1->2->3->1->2,用时26-9+17+26,于8:01:00到达。
对于20%的数据,N≤2;对于40%的数据,N≤100;对于70%的数据,N≤1000;
对于100%的数据,2≤N≤7000,0≤M≤9000,1≤Ai,Bi≤N,|Ti|≤109。
/*
像这种可以不断往返走的,肯定有循环节
*/
#include<iostream>
#include<cstdio>
using namespace std;
int head[],num,n,m;
bool vis[][];
struct node{
int to,pre,v;
}e[];
void Insert(int from,int to,int v){
e[++num].to=to;
e[num].v=v;
e[num].pre=head[from];
head[from]=num;
}
void dfs(int now,int t){
for(int i=head[now];i;i=e[i].pre){
int to=e[i].to;
int tim=(t+(e[i].v%+)%)%;
if(!vis[to][tim]){
vis[to][tim]=;
dfs(to,tim);
}
}
}
int main(){
scanf("%d%d",&n,&m);
int x,y,z;
for(int i=;i<=m;i++){
scanf("%d%d%d",&x,&y,&z);
Insert(x,y,z);
Insert(y,x,z);
}
vis[][]=;
dfs(,);
for(int i=;i<=;i++){
if(vis[][i]){
if(i<)printf("");
printf("%d",i);
return ;
}
}
printf("");
}
Codevs 1961 躲避大龙的更多相关文章
- [codevs 1961]躲避大龙(dfs)
题目:http://dev.codevs.cn/problem/1961/ 分析: 被“SPFA”的标签骗了…… 看了hzwer的博客才知道可以用f[i][0..60]表示每个点每个秒是否可以到.至于 ...
- 1961 躲避大龙(dfs)
1961 躲避大龙 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 你早上起来,慢悠悠地来到学校门口,发现已经是 ...
- CODEVS——T1961 躲避大龙
http://codevs.cn/problem/1961/ 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 De ...
- codevs1961 躲避大龙
1961 躲避大龙 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 你早上起来,慢悠悠地来到学校门口, ...
- 躲避大龙(codevs 1961)
题目描述 Description 你早上起来,慢悠悠地来到学校门口,发现已经是八点整了!(这句话里有一个比较重要的条件) 学校共有N个地点,编号为1~N,其中1号为学校门口(也就是你现在所处的位置), ...
- codevs 3289 花匠
题目:codevs 3289 花匠 链接:http://codevs.cn/problem/3289/ 这道题有点像最长上升序列,但这里不是上升,是最长"波浪"子序列.用动态规划可 ...
- codevs 1082 线段树练习 3(区间维护)
codevs 1082 线段树练习 3 时间限制: 3 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 给你N个数,有两种操作: 1:给区 ...
- codevs 1285 二叉查找树STL基本用法
C++STL库的set就是一个二叉查找树,并且支持结构体. 在写结构体式的二叉查找树时,需要在结构体里面定义操作符 < ,因为需要比较. set经常会用到迭代器,这里说明一下迭代器:可以类似的把 ...
- codevs 1576 最长上升子序列的线段树优化
题目:codevs 1576 最长严格上升子序列 链接:http://codevs.cn/problem/1576/ 优化的地方是 1到i-1 中最大的 f[j]值,并且A[j]<A[i] .根 ...
随机推荐
- python2&python3的区别
区别1. python3中>>>range<3,6>range<3,6> python2中>>>range<3,6>[3,4,5 ...
- Transforming Auto-encoders
http://www.cs.toronto.edu/~hinton/absps/transauto6.pdf The artificial neural networks that are used ...
- Android Button Maker(在线生成android shape xml文件的工具),真方便!
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/scry5566/article/details/25379275 直接上地址:http ...
- Mongoose学习(3)--设置环境变量
比如我一套代码数据库代码分为中文站和英文站,每个表中我都有一个site_code字段来区分, 两个站点部署在不同的人服务器,这个时候我们就用系统环境变量来区分, 下面直接在mac下设置环境变量 vim ...
- [数据挖掘课程笔记]基于规则的分类-顺序覆盖算法(sequential covering algorithm)
Rule_set = {}; //学习的规则集初试为空 for 每个类c do repeat Rule = Learn_One_Rule(D,Att-vals,c) 从D中删除被Rule覆盖的元组; ...
- wake_lock_timeout的使用方法【转】
本文转载自:http://blog.csdn.net/liuxd3000/article/details/44224849 今天有用到用ec43_GPIO的中断来唤醒系统,将系统从深度休眠中唤醒并保证 ...
- POJ1456 Supermarket —— 贪心 + 路径压缩优化
题目链接:http://poj.org/problem?id=1456 Supermarket Time Limit: 2000MS Memory Limit: 65536K Total Subm ...
- 记录下linux好用的命令
http://mp.weixin.qq.com/s/LU1iAWfssv1x-QMX6hJqmQ
- 我在面试.NET/C#程序员时会提出的问题
我在面试.NET/C#程序员时会提出的问题 2011-03-03 15:38 by 老赵, 28107 visits 说起来我也面试过相当数量的.NET(包括C#,后文不重复)程序员了,有的通过电话, ...
- vmware 克隆linux虚拟机后的网卡修改方法
VMware虚拟机安装好CentOS6.5系统后,纯净的系统多克隆几份出来方便后期做试验.克隆步骤很简单,克隆后出现的问题是克隆后的网卡MAC地址和原系统MAC地址一样,在局域网内会有冲突,需要更改克 ...