传送门:点击打开链接

题意:给你有向图,每条边呈周期性开放,即开放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的更多相关文章

  1. UVA-12661 Funny Car Racing (dijkstra)

    题目大意:一张有向图,问从起点到终点的最快时间.不过边有点特殊,从u到v的边没开放a秒就关闭b秒. 题目分析:dijkstra算法即可.在从u走到v的时候要注意一下时间. 代码如下: # includ ...

  2. Funny Car Racing(最短路变形)

    描述 There is a funny car racing in a city with n junctions and m directed roads. The funny part is: e ...

  3. CSU 1333 Funny Car Racing (最短路)

    题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1333 解题报告:一个图里面有n个点和m条单向边,注意是单向边,然后每条路开a秒关闭b秒 ...

  4. UVA 12661 Funny Car Racing 有趣的赛车比赛(最短路,变形)

    题意:赛道有n个交叉点,和m条单向路径(有重边),每条路都是周期性关闭的,且通过仍需一段时间.在比赛开始时,所有道路刚好打开,选择进入该道路必须满足“在打开的时间段进入,在关闭之前出来”,即不可在路上 ...

  5. 洛谷 题解 UVA12661 【有趣的赛车比赛 Funny Car Racing】

    [题意] 在一个赛车比赛中,赛道有\(n(n<=300)\)个交叉点和\(m(m<=50000)\)条单向道路.有趣的是,每条道路都是周期性关闭的.每条道路用5个整数\(u,v,a,b,t ...

  6. UVa 12661 (单源最短路) Funny Car Racing

    题意: 有一个赛车跑道,可以看做一个加权有向图.每个跑道(有向边)还有一个特点就是,会周期性地打开a秒,然后关闭b秒.只有在赛车进入一直到出来,该跑道一直处于打开状态,赛车才能通过. 开始时所有跑道处 ...

  7. UVa - 12661 - Funny Car Racing

    先上题目: 12661 Funny Car RacingThere is a funny car racing in a city with n junctions and m directed ro ...

  8. bzoj1001--最大流转最短路

    http://www.lydsy.com/JudgeOnline/problem.php?id=1001 思路:这应该算是经典的最大流求最小割吧.不过题目中n,m<=1000,用最大流会TLE, ...

  9. 【USACO 3.2】Sweet Butter(最短路)

    题意 一个联通图里给定若干个点,求他们到某点距离之和的最小值. 题解 枚举到的某点,然后优先队列优化的dijkstra求最短路,把给定的点到其的最短路加起来,更新最小值.复杂度是\(O(NElogE) ...

随机推荐

  1. iOS中block 静态全局局部变量block变量,以及对象,详解!

    //最近总是犯迷糊,关于block对外部变量的引用,今天有时间就写了一下,加深自己的理解,巩固基础知识 1 #import <Foundation/Foundation.h> ; int ...

  2. ofbiz数据库表结构设计(2)- CONTACT_MECH

    ofbiz中,party的电话.地址等联系方式设计得非常巧妙,让我们来仔细分析一下. 有一个叫做CONTACT_MECH的表,这张表我们把它称作联系方式表,一个电话号码.一个通讯地址.一个电子邮件,都 ...

  3. ThreadPool学习草稿1

    原文发布时间为:2010-10-27 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Collections.Generic;using Syste ...

  4. Codeforces Round #453 Div. 2 A B C D (暂时)

    // 从大作业和实验报告中爬出来水一发 // 补题...还是得排在写完实验报告之后... A. Visiting a Friend 题意 给定若干段行车区间,问能否从起点到终点 思路 扫描一遍,维护最 ...

  5. iOS关于本地推送

      不多说 直接上代码 
 NSDate *now = [NSDate date]; UILocalNotification *reminderNotification = [[UILocalNoti ...

  6. IDEA 2017.3 新版本中创建 JSF Web 应用程序缺少 web.xml 的解决办法

    IDEA 2017.3 新版本中默认创建一个 Web 应用程序很可能不会自动创建 web.xml 文件.虽然说从 JavaEE 6.0 开始 Servlet 3.0 规范中就新增了一些注解可以免去传统 ...

  7. Java反射获取类对象的三种方式

    package demo01; /* * 获取一个类的class文件对象的三种方式 * 1.对象获取 * 2.类名获取 * 3.Class类的静态方法获取 */ public class Reflec ...

  8. ef core 2.1 利用Query Type查询视图

    ef core新加入的功能“Query Type”可以让我们很方便的查询视图而不需要做任何特殊处理.不过在代码上和普通的查询有些不同. 先贴文档:https://docs.microsoft.com/ ...

  9. 洛谷——P2781 传教

    P2781 传教 题目背景 写完暑假作业后,bx2k去找pear玩.pear表示他要去汉中传教,于是bx2k准备跟着去围观. 题目描述 pear把即将接受传教的人排成一行,每个人从左到右的编号为1-n ...

  10. Resolving the Provisioning Profile Invalid Status

    Q:  What causes the provisioning profile "Invalid" status? How do I resolve it, and how do ...