洛谷 P3106 [USACO14OPEN]GPS的决斗Dueling GPS's

洛谷传送门

JDOJ 2424: USACO 2014 Open Silver 2.Dueling GPSs

JDOJ传送门

Description

Problem 2: Dueling GPS's [Brian Dean, 2014]

Farmer John has recently purchased a new car online, but in his haste he

accidentally clicked the "Submit" button twice when selecting extra

features for the car, and as a result the car ended up equipped with two

GPS navigation systems! Even worse, the two systems often make conflicting

decisions about the route that FJ should take.

The map of the region in which FJ lives consists of N intersections

(2 <= N <= 10,000) and M directional roads (1 <= M <= 50,000). Road i

connects intersections A_i (1 <= A_i <= N) and B_i (1 <= B_i <= N).

Multiple roads could connect the same pair of intersections, and a

bi-directional road (one permitting two-way travel) is represented by two

separate directional roads in opposite orientations. FJ's house is located

at intersection 1, and his farm is located at intersection N. It is

possible to reach the farm from his house by traveling along a series of

directional roads.

Both GPS units are using the same underlying map as described above;

however, they have different notions for the travel time along each road.

Road i takes P_i units of time to traverse according to the first GPS unit,

and Q_i units of time to traverse according to the second unit (each

travel time is an integer in the range 1..100,000).

FJ wants to travel from his house to the farm. However, each GPS unit

complains loudly any time FJ follows a road (say, from intersection X to

intersection Y) that the GPS unit believes not to be part of a shortest

route from X to the farm (it is even possible that both GPS units can

complain, if FJ takes a road that neither unit likes).

Please help FJ determine the minimum possible number of total complaints he

can receive if he chooses his route appropriately. If both GPS units

complain when FJ follows a road, this counts as +2 towards the total.

Input

* Line 1: The integers N and M.

Line i describes road i with four integers: A_i B_i P_i Q_i.

Output

* Line 1: The minimum total number of complaints FJ can receive if he

routes himself from his house to the farm optimally.

Sample Input

5 7 3 4 7 1 1 3 2 20 1 4 17 18 4 5 25 3 1 2 10 1 3 5 4 14 2 4 6 5

Sample Output

1

HINT

INPUT DETAILS:

There are 5 intersections and 7 directional roads. The first road connects

from intersection 3 to intersection 4; the first GPS thinks this road takes

7 units of time to traverse, and the second GPS thinks it takes 1 unit of

time, etc.

OUTPUT DETAILS:

If FJ follows the path 1 -> 2 -> 4 -> 5, then the first GPS complains on

the 1 -> 2 road (it would prefer the 1 -> 3 road instead). However, for

the rest of the route 2 -> 4 -> 5, both GPSs are happy, since this is a

shortest route from 2 to 5 according to each GPS.

题目大意:

给你一个N个点的有向图,可能有重边.

有两个GPS定位系统,分别认为经过边i的时间为Pi,和Qi.

每走一条边的时候,如果一个系统认为走的这条边不是它认为的最短路,就会受到警告一次T T

两个系统是分开警告的,就是说当走的这条边都不在两个系统认为的最短路范围内,就会受到2次警告.

如果边(u,v)不在u到n的最短路径上,这条边就受到一次警告,求从1到n最少受到多少次警告。

题解:

3遍SPFA 打到我吐血。

我不想讲了。

#include<iostream>
#include<algorithm>
#include<queue>
#include<cstring>
#define inf 0x3f3f3f
using namespace std;
struct edge{
int w,to,next;
}e1[201100];
edge e2[201100];
edge e3[201100];
int head1[101100],head2[101100],head3[101100];
int d1[101100],d2[101100],d3[101100];
int f1[101100],f2[101100];
int n,en1,en2,en3,m;
void add1(int v,int u,int w){
en1++;
e1[en1].to=v;
e1[en1].w=w;
e1[en1].next=head1[u];
head1[u]=en1;
}
void add2(int v,int u,int w){
en2++;
e2[en2].to=v;
e2[en2].w=w;
e2[en2].next=head2[u];
head2[u]=en2;
}
void add3(int u,int v,int w){
en3++;
e3[en3].to=v;
e3[en3].w=w;
e3[en3].next=head3[u];
head3[u]=en3;
}
void sp1(int s){
queue<int> q;
int inq[20010];
memset(inq,0,sizeof(inq));
for(int i=1;i<=n;i++)d1[i]=inf;
q.push(s);inq[s]=1;d1[s]=0;
while(!q.empty()){
int u=q.front();q.pop();inq[u]=0;
for(int i=head1[u];i;i=e1[i].next){
int v=e1[i].to,w=e1[i].w;
if(d1[v]>d1[u]+w)
{
d1[v]=d1[u]+w;
f1[v]=i;
if(!inq[v]){
inq[v]=1;
q.push(v);
}
}
}
}
}
void sp2(int s){
queue<int> q;
int inq[20010];
memset(inq,0,sizeof(inq));
for(int i=1;i<=n;i++)d2[i]=inf;
q.push(s);inq[s]=1;d2[s]=0;
while(!q.empty()){
int u=q.front();q.pop();inq[u]=0;
for(int i=head2[u];i;i=e2[i].next){
int v=e2[i].to,w=e2[i].w;
if(d2[v]>d2[u]+w)
{
d2[v]=d2[u]+w;
f2[v]=i;
if(!inq[v]){
inq[v]=1;
q.push(v);
}
}
}
}
}
void sp3(int s){
queue<int> q;
int inq[20010];
memset(inq,0,sizeof(inq));
for(int i=1;i<=n;i++)d3[i]=inf;
q.push(s);inq[s]=1;d3[s]=0;
while(!q.empty()){
int u=q.front();q.pop();
for(int i=head3[u];i;i=e3[i].next){
int v=e3[i].to,w=e3[i].w;
if(i==f1[u])w--;
if(i==f2[u])w--;
if(d3[v]>d3[u]+w)
{
d3[v]=d3[u]+w;
if(!inq[v]){
inq[v]=1;
q.push(v);
}
}
}inq[u]=0;
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
int a,b,c,d;
cin>>a>>b>>c>>d;
add1(a,b,c);
add2(a,b,d);
add3(a,b,2);
}
sp1(n);
sp2(n);
sp3(1);
cout<<d3[n];
}

USACO Dueling GPS's的更多相关文章

  1. BZOJ3538: [Usaco2014 Open]Dueling GPS

    3538: [Usaco2014 Open]Dueling GPS Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 59  Solved: 36[Subm ...

  2. BZOJ 3538 == 洛谷 P3106 [USACO14OPEN]GPS的决斗Dueling GPS's

    P3106 [USACO14OPEN]GPS的决斗Dueling GPS's 题目描述 Farmer John has recently purchased a new car online, but ...

  3. Luogu P3106 [USACO14OPEN]GPS的决斗Dueling GPS's(最短路)

    P3106 [USACO14OPEN]GPS的决斗Dueling GPS's 题意 题目描述 Farmer John has recently purchased a new car online, ...

  4. USACO 2014 US Open Dueling GPS's /// SPFA

    题目大意: 给定n个点m条边的有向图 有两个GPS 分别认为 A[i]到B[i] 的一条边的花费是P[i].Q[i] 当当前走的边不是GPS认为的最短路上的边就会被警告 即两个GPS都不认为是最短路上 ...

  5. [USACO14OPEN] Dueling GPS's[最短路建模]

    题目描述 Farmer John has recently purchased a new car online, but in his haste he accidentally clicked t ...

  6. 【BZOJ】3538: [Usaco2014 Open]Dueling GPS(spfa)

    http://www.lydsy.com/JudgeOnline/problem.php?id=3538 题意不要理解错QAQ,是说当前边(u,v)且u到n的最短距离中包含这条边,那么这条边就不警告. ...

  7. 洛谷 3106 [USACO14OPEN]GPS的决斗Dueling GPS's 3720 [AHOI2017初中组]guide

    [题解] 这两道题是完全一样的. 思路其实很简单,对于两种边权分别建反向图跑dijkstra. 如果某条边在某一种边权的图中不是最短路上的边,就把它的cnt加上1.(这样每条边的cnt是0或1或2,代 ...

  8. [USACO14OPEN]GPS的决斗Dueling GPS's

    题目概况 题目描述 给你一个\(N\)个点的有向图,可能有重边. 有两个\(GPS\)定位系统,分别认为经过边\(i\)的时间为\(P_i\),和\(Q_i\). 每走一条边的时候,如果一个系统认为走 ...

  9. 2018.07.22 洛谷P3106 GPS的决斗Dueling GPS's(最短路)

    传送门 图论模拟题. 这题直接写3个(可以压成一个)spfa" role="presentation" style="position: relative;&q ...

随机推荐

  1. [题解向] CF#536Div2の题解 E&F

    \(0x01~~Preface\) \(emmm\)这次CF本身打的很顺畅,但是居然unrated了--咕咕咕咕 这是头一次CF有比赛我全部题目都做了--可喜可贺可喜可贺233 简单总结一下前面四道题 ...

  2. ILRuntime 学习

    ILRuntime: https://github.com/Ourpalm/ILRuntime Demo: https://github.com/Ourpalm/ILRuntimeU3D 中文在线文档 ...

  3. Paper | Toward Convolutional Blind Denoising of Real Photographs

    目录 故事背景 建模现实噪声 CBDNet 非对称损失 数据库 实验 发表在2019 CVPR. 摘要 While deep convolutional neural networks (CNNs) ...

  4. 第04组 Alpha冲刺(5/6)

    队名:new game 组长博客:戳 作业博客:戳 组员情况 鲍子涵(队长) 燃尽图 过去两天完成了哪些任务 才两天,也就是实现一些功能而已 复习了一下SuffixAutomata 接下来的计划 实现 ...

  5. Pencil 基于Electron的GUI原型工具之菜单再探

    为什么要重试呢? 主要是觉得Pencil这个工具还是比较有价值.就像Linus对Linux下分发版的态度"让用户有选择"一样,在现在这个Sass服务.Web服务化越来越普遍越便利的 ...

  6. CocoaPods 升级1.8.4的坑 CDN: trunk Repo update failed

    之前升级了cocoaPods 版本1.8.4,今天pod install,然后问题就来了: 1.出现了下边的问题: Adding spec repo `trunk` with CDN `https:/ ...

  7. 详解 IaaS、PaaS和SaaS 以及他们各自的代表公司

    ——IaaS,PaaS和SaaS 是云计算领域的专业术语,也是云计算的三种服务模式.   (1)SaaS:Software as a Service,软件即服务(也称为云应用程序服务) . 云市场中企 ...

  8. 转载-Qualcomm MSM8953启动流程:PBL-SBL1-(bootloader)LK-Android

    文章转载链接: https://blog.csdn.net/RadianceBlau/article/details/73229005 对于嵌入式工程师了解芯片启动过程是十分有必要的,在分析.调试各种 ...

  9. NXP官方的i.mx6ul板级uboot源码适配

    1.前言 CoM-P6UL是盈鹏飞科技有限公司基于NXP原厂I.MX6UL芯片生产研发的核心板,本文将对CoM-P6UL适配NXP的基于Linux4.1.15版本的uboot板级源码. 2.开发环境 ...

  10. 【MySQL】完整性约束条件与设计范式

    完整性约束条件 概念: 对表中的数据进行限定,保证数据的正确性.有效性和完整性. 分类: 主键约束:primary key 非空约束:not null 唯一约束:unique 外键约束:foreign ...