题目大意:

给定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. cookie,seesion学习

    一,为什么需要cookie和session? 1,Web应用程序是使用HTTP协议传输数据的.然而HTTP协议是无状态的协议.一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的 ...

  2. Hibernate4教程六:性能提升和二级缓存

    抓取策略(fetching strategy)是指:当应用程序需要在(Hibernate实体对象图的)关联关系间进行导航的时候,Hibernate如何获取关联对象的策略.抓取策略可以在O/R映射的元数 ...

  3. 记一次Xshell配置ssh免密登录时的问题

    问题: 今天在配置SSH免密登录连接自己的阿里云服务器,在将RSA加密生成的公钥放到服务器后,用Xshell连接服务,出现所选的用户密钥未在远程主机上注册这样的提示,一时懵逼,不知所措,后面终于找到了 ...

  4. SQL数据库—<6>存储过程

    Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这样就可以提高存储过程的性能. Ø ...

  5. XMPP即时通讯协议使用(十)——好友关系状态

    sub  ask  recv 订阅 询问 接受 含义 substatus -1-  应该删除这个好友          Indicates that the roster item should be ...

  6. jvm加载包名和类名相同的类的规则,以及如何加载包名和类名相同的类(转)

    jvm包括三种类加载器: 第一种:bootstrap classloader:加载java的核心类. 第二种:extension classloader:负责加载jre的扩展目录中的jar包. 第三种 ...

  7. foobar2000 频谱给我的win10 任务栏添加一点会动背景

    在任务栏右键,"任务栏设置",颜色 -> 透明效果, 然后 foobar2000 的 view -> layout -> Quick Setup,选择带有Visu ...

  8. anaconda3创建py2环境

    查看conda的py环境conda info -e # 创建一个名为python34的环境,指定Python版本是3.4(创建py27操作一样)conda create -n py34 python= ...

  9. 用idea将本地项目提交到gitlab上

    提交的前提是你必须有gitlab的地址 以下是将本地代码提交到gitlab上 在idea的菜单项选择 VCS>Import into Version Control>Create Git ...

  10. USB转串口CH340接线方法

    https://blog.csdn.net/wangjiaweiwei/article/details/49612207 USB转串口模块可以使用5V电压供电,需要将跳帽按下图安装. USB转串口模块 ...