H - Funny Car Racing
H - Funny Car Racing
Time Limit:1000MS Memory Limit:0KB 64bit IO Format:%lld & %llu
Description
There is a funny car racing in a city with n junctions and m directed roads. The funny part is: each road is open and closed periodically. Each road is associate with two integers (a, b), that means the road will be open for a seconds, then closed for b seconds, then open for a seconds. . . All these start from the beginning of the race. You must enter a road when it’s open, and leave it before it’s closed again. Your goal is to drive from junction s and arrive at junction t as early as possible. Note that you can wait at a junction even if all its adjacent roads are closed.
Input
There will be at most 30 test cases. The first line of each case contains four integers n, m, s, t (1 ≤ n ≤ 300, 1 ≤ m ≤ 50, 000, 1 ≤ s, t ≤ n). Each of the next m lines contains five integers u, v, a, b, t (1 ≤ u, v ≤ n, 1 ≤ a, b, t ≤ 105 ), that means there is a road starting from junction u ending with junction v. It’s open for a seconds, then closed for b seconds (and so on). The time needed to pass this road, by your car, is t. No road connects the same junction, but a pair of junctions could be connected by more than one road.
Output
For each test case, print the shortest time, in seconds. It’s always possible to arrive at t from s.
Sample Input
3 2 1 3
1 2 5 6 3
2 3 7 7 6
3 2 1 3
1 2 5 6 3
2 3 9 5 6
Sample Outpu
Case 1: 20
Case 2: 9
//这题的意思是:第一行4个整数 n,m,s,t . 1 < n < 300 , 1 < m < 50000 , 1 <= s , t <= n , n 是点的个数,m 是有向边的个数,s 是起点,t 是终点
第二行五个整数 u , v , a , b , t ,说明有向边的起点,终点,这条边开启的时间,关闭的时间,通过需要的时间。这题简化了,通过这条边的条件是在关闭之前过去,不然就等到下个轮回再过去。显然t>a就不可能过去了,这数据应舍弃
//这题,是这个星期,完全没看别人的自己做出来的第一个题,对于刚学图论的有点难度。其实不难.
//spfa算法 0kb 50ms
#include <cstdio>
#include <cstring>
#include <queue>
using namespace std; #define MAXN 500005
#define inf 0xfffffff struct Bian
{
int e;
int a,b,t;
int next;
}bian[MAXN]; int headlist[];
int d[];
int vis[];//其实我真不知道这个有什么用,不加也能过,有时候还能更快,但是每次看到spfa算法都加上我就加上了
int Case=; int check(int time,Bian x)//通过这条边需要的时间
{
int k=time%(x.a+x.b);
if (k+x.t<=x.a)
{
return x.t;
}
return x.a+x.b-k+x.t;
} void spfa(int n,int m,int star,int end)
{
queue<int> Q;
int i,x,v,y;
for (i=;i<=n;i++)
{
d[i]=inf;
vis[i]=;
}
d[star]=;
Q.push(star);
while (!Q.empty())
{
x=Q.front();
Q.pop();
vis[x]=;
for (i=headlist[x];i!=-;i=bian[i].next)
{
v=bian[i].e;
y=check(d[x],bian[i]);
if (d[v]>d[x]+y)
{
d[v]=d[x]+y;
if (!vis[v])
{
vis[v]=;
Q.push(v);
}
}
}
}
printf("Case %d: %d\n",++Case,d[end]);
} int main()
{
int n,m,s,e;
int u,v,a,b,t;
int i;
while (scanf("%d%d%d%d",&n,&m,&s,&e)!=EOF)
{
for (i=;i<=n;i++)
headlist[i]=-; for (i=;i<=m;i++)
{
scanf("%d%d%d%d%d",&u,&v,&a,&b,&t);
if (t>a) continue;
bian[i].e=v;
bian[i].a=a;
bian[i].b=b;
bian[i].t=t;
bian[i].next=headlist[u];//这叫邻接表吧
headlist[u]=i;
}
spfa(n,m,s,e);
}
return ;
}
H - Funny Car Racing的更多相关文章
- [POJ1801]Formula Racing(模拟)
Formula Racing Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 289 Accepted: 77 Descr ...
- ACM: Racing Gems - 最长递增序列
Racing Gems You are playing a racing game. Your character starts at the x axis (y = 0) and procee ...
- UVALive - 7374 Racing Gems 二维非递减子序列
题目链接: http://acm.hust.edu.cn/vjudge/problem/356795 Racing Gems Time Limit: 3000MS 问题描述 You are playi ...
- Tian Ji -- The Horse Racing
Tian Ji -- The Horse Racing Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Jav ...
- UVA 1344 Tian Ji -- The Horse Racing
Tian Ji -- The Horse Racing Here is a famous story in Chinese history. That was about 2300 years ago ...
- hdoj 1052 Tian Ji -- The Horse Racing【田忌赛马】 【贪心】
思路:先按从小到大排序, 然后从最快的開始比(如果i, j 是最慢的一端, flag1, flag2是最快的一端 ),田的最快的大于king的 则比較,如果等于然后推断,有三种情况: 一:大于则比較, ...
- hdu1052 Tian Ji -- The Horse Racing 馋
转载请注明出处:http://blog.csdn.net/u012860063 题目链接:pid=1052">http://acm.hdu.edu.cn/showproblem.php ...
- Racing Car Computer dp
Racing Car Computer Input: Standard Input Output: Standard Output The racing cars of today are equ ...
- hdu-1052-Tian Ji -- The Horse Racing(经典)
/* hdu-1052 Tian Ji -- The Horse Racing Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/3 ...
随机推荐
- 基于ruby环境搭建Redmine
环境说明 系统版本 CentOS 6.9 x86_64 软件版本 ruby 2.4.4 rails 4.2 redmine-3.4.5 Redmine是一个开源的.基于Web的项目管理和缺 ...
- oracle 12C SYS,SYSTEM用户的密码都忘记或是丢失
密码 conn / as sysdba alter user system identified by Abcd1234; manual script first -->manual_scrip ...
- Angular 学习笔记——ng-animate
<!DOCTYPE HTML> <html ng-app="myApp"> <head> <meta http-equiv="C ...
- uva 12627 - Erratic Expansion(递归求解)
递归的边界条件写的多了--不是必需写呢么多的.. 不明确可共同探讨~ #include<cstdio> #include<iostream> #include<cmath ...
- UE4射击小游戏原型
尝试使用了下blueprint,不知道是bug还是不熟悉,blueprint有些地方运行的跟逻辑不太一样.不管ue4目前,快速做原型倒是蛮方便的.就等着官方发更多教程讲述关于新的matinee,Nav ...
- zabbix监控端口
使用zabbix自带key监控进程与端口 每个公司都有自己的程序,自己的进程名与端口监听,对于nagios来说,这些都经常需要自己去写插件,但是zabbix不需要,它自己就有监控进程与端口的key. ...
- spring异常 java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderServlet
spring异常 java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderServlet 情况 ...
- 使用UIDatePicker
什么是UIDatePicker 用官方文档的话来说,UIDatePicker就是使用多个滚轮来选择日期和时间的类.官方的示例有定时器,闹钟(设置时间)部件.正确设置后,UIDatePicker对象会在 ...
- 并发编程概述 委托(delegate) 事件(event) .net core 2.0 event bus 一个简单的基于内存事件总线实现 .net core 基于NPOI 的excel导出类,支持自定义导出哪些字段 基于Ace Admin 的菜单栏实现 第五节:SignalR大杂烩(与MVC融合、全局的几个配置、跨域的应用、C/S程序充当Client和Server)
并发编程概述 前言 说实话,在我软件开发的头两年几乎不考虑并发编程,请求与响应把业务逻辑尽快完成一个星期的任务能两天完成绝不拖三天(剩下时间各种浪),根本不会考虑性能问题(能接受范围内).但随着工 ...
- [redis]redis概述
Redis是一个开源.支持网络.基于内存.可持久化的日志型.key-value键值对数据库.使用ANSI C编写.并提供多种语言的API. 它是远程字典server(remote dictionary ...