题目大意:

给定n个点m条边的有向图

有两个GPS 分别认为 A[i]到B[i] 的一条边的花费是P[i]、Q[i]

当当前走的边不是GPS认为的最短路上的边就会被警告

即两个GPS都不认为是最短路上的边时 会被警告两次

求从点1走到点n被警告次数最少是多少次

https://blog.csdn.net/oakley_/article/details/52510465

按P[i]反向建图 再从n跑最短路到1 然后遍历所有的边判断将不是最短路的边C[i]+1

Q[i]也同样 最后按C[i]从1跑最短路到n 得到的就是被最少警告的次数

为什么要反向建图跑最短路?

因为导航系统到了点2 点3 点4...之后仍然要导航到目标点n

那么就变成了点2到点n的最短路 点3到点n的最短路 ...

所以反向是要使得求出dis[i]为 点i到点n的最短路

若是正向会是 点1到点n的最短路 与要求不符

#include <bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
#define LL long long
#define gcd(i,j) __gcd(i,j)
#define mem(i,j) memset(i,j,sizeof(i))
#define inc(i,j,k) for(int i=j;i<=k;i++)
#define dec(i,j,k) for(int i=j;i>=k;i--)
const int N=1e4+;
const int M=1e5+; int n,m,C[M];
int A[M],B[M],P[M],Q[M]; struct NODE { int to,len,nt; }e[M];
int head[N], tot;
void init() { tot=; mem(head,); }
void addE(int u,int v,int w) {
e[tot].to=v; e[tot].len=w;
e[tot].nt=head[u]; head[u]=tot++;
} int dis[N];
bool inq[N];
void SPFA(int s) {
mem(dis,INF);
queue<int>q;
while(!q.empty()) q.pop();
dis[s]=; q.push(s);
while(!q.empty()) {
int u=q.front(); q.pop();
inq[u]=;
for(int i=head[u];i;i=e[i].nt) {
int v=e[i].to;
if(dis[v]<=dis[u]+e[i].len) continue;
dis[v]=dis[u]+e[i].len;
if(!inq[v]) inq[v]=, q.push(v);
}
}
} void check(int u[],int v[],int w[],int st) {
init();
inc(i,,m) addE(u[i],v[i],w[i]);
SPFA(st);
inc(i,,m) if(dis[v[i]]!=dis[u[i]]+w[i]) C[i]++;
} int main()
{
while(~scanf("%d%d",&n,&m)) {
inc(i,,m) scanf("%d%d%d%d",&A[i],&B[i],&P[i],&Q[i]);
mem(C,);
check(B,A,P,n);
check(B,A,Q,n);
check(A,B,C,);
printf("%d\n",dis[n]);
} return ;
}

USACO 2014 US Open Dueling GPS's /// SPFA的更多相关文章

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

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

  2. USACO Dueling GPS's

    洛谷 P3106 [USACO14OPEN]GPS的决斗Dueling GPS's 洛谷传送门 JDOJ 2424: USACO 2014 Open Silver 2.Dueling GPSs JDO ...

  3. BZOJ3538: [Usaco2014 Open]Dueling GPS

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

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

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

  5. USACO翻译:USACO 2014 DEC Silver三题

    USACO 2014 DEC SILVER 一.题目概览 中文题目名称 回程 马拉松 奶牛慢跑 英文题目名称 piggyback marathon cowjog 可执行文件名 piggyback ma ...

  6. USACO翻译:USACO 2014 FEB SILVER 三题

    USACO 2014 FEB SILVER 一.题目概览 中文题目名称 自动打字 路障 神秘代码 英文题目名称 auto rblock scode 可执行文件名 auto rblock scode 输 ...

  7. USACO翻译:USACO 2014 JAN三题(2)

    USACO 2014 JAN 一.题目概览 中文题目名称 队伍平衡 滑雪录像 滑雪场建设 英文题目名称 bteams recording skicourse 可执行文件名 bteams recordi ...

  8. USACO翻译:USACO 2014 JAN三题(1)

    USACO 2014 JAN 一.题目概览 中文题目名称 滑雪场设计 滑雪降速 滑雪场评级 英文题目名称 skidesign slowdown skilevel 可执行文件名 skidesign sl ...

  9. USACO翻译:USACO 2014 MARCH Silver三题

    USACO 2014 MARCH 一.题目概览 中文题目名称 农田灌溉 懒牛 牛叫 英文题目名称 irrigation lazy mooomoo 可执行文件名 irrigation lazy mooo ...

随机推荐

  1. 3年Java,鏖战腾讯

    作者:codegoose https://segmentfault.com/a/1190000017864721 经过半年的沉淀,加上对MySQL,redis和分布式这块的补齐,终于重拾面试信心,再次 ...

  2. C++ 中的 const、引用和指针的深入分析

    1,关于 const 的疑问: 1,const 什么时候为只读变量,什么时候是常量: 1,const 从 C 到 C++ 进化的过程中得到了升级,const 在 C++ 中不仅仅像在 C 中声明一个只 ...

  3. 51-python基础-python3-列表-常用列表方法- index()方法

    index()方法 1-可以传入一个值,如果该值存在于列表中,就返回它的下标. 实例1: 2-如果该值不在列表中,Python 就报 ValueError. 实例2: 3-如果列表中存在重复的值,就返 ...

  4. Compile Linux Kernel on Ubuntu 12.04 LTS (Detailed)

    This tutorial will outline the process to compile your own kernel for Ubuntu. It will demonstrate bo ...

  5. java收藏的技术资料链接

    TCP三次握手详解: https://blog.csdn.net/baiyan3212/article/details/81302448 ICE通信: https://blog.csdn.net/zh ...

  6. C#break和continue学习

    一,代码 static void Main(string[] args) { ; while (true) { int num = Convert.ToInt32(Console.ReadLine() ...

  7. HttpClient 之 发送Https请求

    HttpClient包是一个优秀的Http请求的开源jar. 本文Http工具类的封装基于HttpClient,封装后的工具类支持Https请求. 但是由于项目的需要快速的实现,以下代码还可能会有点过 ...

  8. Java调用DB的存储过程

    2015/12/7 使用数据库存储过程的java代码:   try {            con = (Connection) DBProxy.getConnection(null);       ...

  9. Educational Codeforces Round 33 D. Credit Card

    Credit Card time limit per test2 seconds memory limit per test256 megabytes Recenlty Luba got a cred ...

  10. Adapter的实现

    Adapter概念: Adapter是连接后端数据和前端显示的适配接口,是数据和UI(View)之间一个重要的纽带.在常见的View(ListView, GridView)等地方都需要用到Adapte ...