最短路 uva12661 Funny Car Racing
传送门:点击打开链接
题意:给你有向图,每条边呈周期性开放,即开放a时间,再关闭b时间。再开放a时间以此类推
假设时间不足以穿过这条路则不能走。你能够在节点等待时间,问从s走到t所须要的最小时间
细致想一想这题。对于某条边。越早走到u点一定是最优的,大不了我就等时间嘛
所以,这仅仅是一个普通的dijistra然后略微在每一条边的距离上做了点手脚而已
在节点等待时间。我们能够觉得是某一条路的长度添加了,所以仅仅要在读取边长度的时候,略微处理一下等待时间。就能够了
须要注意的地方:
1.假设开放时间小于边的长度,这条边是不管如何都不能通过的。所以一開始就不能把这条边加入进去
2.假设到达某一点时,这条边是开放的。可是剩下的开放时间已经不足以通过这条边,那么要等到关闭后。又一次开放时。才干通过
#include<map>
#include<set>
#include<cmath>
#include<stack>
#include<queue>
#include<cstdio>
#include<string>
#include<vector>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<functional>
#define FIN freopen("input.txt","r",stdin)
#define FOUT freopen("output.txt","w+",stdout) using namespace std;
typedef long long LL;
typedef pair<int, int> PII;
typedef pair<LL, int> PLI; const int MX = 1e5 + 5;
const int INF = 0x3f3f3f3f; int Head[MX], Next[MX], rear; struct Edge {
int u, v, cost, a, b;
} E[MX]; void edge_init() {
rear = 0;
memset(Head, -1, sizeof(Head));
} void edge_add(int u, int v, int cost, int a, int b) {
E[rear].u = u;
E[rear].v = v;
E[rear].cost = cost;
E[rear].a = a;
E[rear].b = b;
Next[rear] = Head[u];
Head[u] = rear++;
} LL d[MX];
void dijistra(int Begin) {
memset(d, INF, sizeof(d));
d[Begin] = 0; priority_queue<PLI, vector<PLI>, greater<PLI> >work;
work.push(PLI(0, Begin)); while(!work.empty()) {
PLI f = work.top();
work.pop(); LL dist = f.first;
int u = f.second; for(int id = Head[u]; ~id; id = Next[id]) {
int tq = E[id].a + E[id].b, time = dist % tq, add = 0;
if(time > E[id].a || time + E[id].cost > E[id].a) add = tq - time; int cost = E[id].cost + add, v = E[id].v;
if(dist + cost < d[v]) {
d[v] = dist + cost;
work.push(PLI(dist + cost, v));
}
}
}
} int main() {
int n, m, s, t, ansk = 0; //FIN;
while(~scanf("%d%d%d%d", &n, &m, &s, &t)) {
edge_init();
for(int i = 1; i <= m; i++) {
int u, v, a, b, cost;
scanf("%d%d%d%d%d", &u, &v, &a, &b, &cost);
if(a >= cost) edge_add(u, v, cost, a, b);
}
dijistra(s); printf("Case %d: %lld\n", ++ansk, d[t]);
}
return 0;
}
最短路 uva12661 Funny Car Racing的更多相关文章
- UVA-12661 Funny Car Racing (dijkstra)
题目大意:一张有向图,问从起点到终点的最快时间.不过边有点特殊,从u到v的边没开放a秒就关闭b秒. 题目分析:dijkstra算法即可.在从u走到v的时候要注意一下时间. 代码如下: # includ ...
- Funny Car Racing(最短路变形)
描述 There is a funny car racing in a city with n junctions and m directed roads. The funny part is: e ...
- CSU 1333 Funny Car Racing (最短路)
题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1333 解题报告:一个图里面有n个点和m条单向边,注意是单向边,然后每条路开a秒关闭b秒 ...
- UVA 12661 Funny Car Racing 有趣的赛车比赛(最短路,变形)
题意:赛道有n个交叉点,和m条单向路径(有重边),每条路都是周期性关闭的,且通过仍需一段时间.在比赛开始时,所有道路刚好打开,选择进入该道路必须满足“在打开的时间段进入,在关闭之前出来”,即不可在路上 ...
- 洛谷 题解 UVA12661 【有趣的赛车比赛 Funny Car Racing】
[题意] 在一个赛车比赛中,赛道有\(n(n<=300)\)个交叉点和\(m(m<=50000)\)条单向道路.有趣的是,每条道路都是周期性关闭的.每条道路用5个整数\(u,v,a,b,t ...
- UVa 12661 (单源最短路) Funny Car Racing
题意: 有一个赛车跑道,可以看做一个加权有向图.每个跑道(有向边)还有一个特点就是,会周期性地打开a秒,然后关闭b秒.只有在赛车进入一直到出来,该跑道一直处于打开状态,赛车才能通过. 开始时所有跑道处 ...
- UVa - 12661 - Funny Car Racing
先上题目: 12661 Funny Car RacingThere is a funny car racing in a city with n junctions and m directed ro ...
- bzoj1001--最大流转最短路
http://www.lydsy.com/JudgeOnline/problem.php?id=1001 思路:这应该算是经典的最大流求最小割吧.不过题目中n,m<=1000,用最大流会TLE, ...
- 【USACO 3.2】Sweet Butter(最短路)
题意 一个联通图里给定若干个点,求他们到某点距离之和的最小值. 题解 枚举到的某点,然后优先队列优化的dijkstra求最短路,把给定的点到其的最短路加起来,更新最小值.复杂度是\(O(NElogE) ...
随机推荐
- 当时用vuex的时候,使用...对象展开扩展符报错的解决办法
出现这种问题的主要原因是当前的babel不支持...对象展开扩展符,只需要安装一个插件然后再在.babelrc当中进行下配置就好了 npm i babel-plugin-transform-objec ...
- POJ1927 Area in Triangle
Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 1458 Accepted: 759 Description Give ...
- 洛谷 P1038 神经网络
题目背景 人工神经网络(Artificial Neural Network)是一种新兴的具有自我学习能力的计算系统,在模式识别.函数逼近及贷款风险评估等诸多领域有广泛的应用.对神经网络的研究一直是当今 ...
- java编码,乱码问题详解
一.常见的编码格式 1.ASCII 基础编码,英文和西欧字符. 用一个字节的低7位表示,一共128个. 0~13是控制字符如换行.回车.删除等,32~126是打印字符,键盘输入. 2.IOS-8859 ...
- Hbuilder 快捷键
最近在学习javaweb 在学前端的时候用到了一款国产编辑器 很棒 Hbuilder 快捷键 Ctrl + d 删除整行内容 Ctrl + Shift +R ...
- Sprak RDD简单应用
来自:http://my.oschina.net/scipio/blog/284957#OSC_h5_11 目录[-] 1.准备文件 2.加载文件 3.显示一行 4.函数运用 (1)map (2)co ...
- 洛谷——P2383 狗哥玩木棒
P2383 狗哥玩木棒 题目背景 狗哥又趁着语文课干些无聊的事了... 题目描述 现给出一些木棒长度,那么狗哥能否用给出的木棒(木棒全用完)组成一个正方形呢? 输入输出格式 输入格式: 输入文件中的第 ...
- superagent-promise
var Promise = this.Promise || require('promise'); var agent = require('superagent-promise')(require( ...
- 基于Java实现的选择排序算法
选择排序和冒泡排序同样是基础排序算法,现在也做个学习积累. 简述 选择排序算法较为稳定,基本上都是O(n2)的时间复杂度,规模越小排序越快,不需要占用额外空间.其实选择排序原理很简单,就是在未排序序列 ...
- Java中final和static关键字总结
1.final: final关键字可用于类.方法.变量前. final修饰的类不可被继承,例如java.lang.Math就是一个 final类,不可被继承. final修饰变量,在显示初始化后不可改 ...