USACO 2014 US Open Dueling GPS's /// SPFA
题目大意:
给定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的更多相关文章
- 【BZOJ】3538: [Usaco2014 Open]Dueling GPS(spfa)
http://www.lydsy.com/JudgeOnline/problem.php?id=3538 题意不要理解错QAQ,是说当前边(u,v)且u到n的最短距离中包含这条边,那么这条边就不警告. ...
- USACO Dueling GPS's
洛谷 P3106 [USACO14OPEN]GPS的决斗Dueling GPS's 洛谷传送门 JDOJ 2424: USACO 2014 Open Silver 2.Dueling GPSs JDO ...
- BZOJ3538: [Usaco2014 Open]Dueling GPS
3538: [Usaco2014 Open]Dueling GPS Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 59 Solved: 36[Subm ...
- Luogu P3106 [USACO14OPEN]GPS的决斗Dueling GPS's(最短路)
P3106 [USACO14OPEN]GPS的决斗Dueling GPS's 题意 题目描述 Farmer John has recently purchased a new car online, ...
- USACO翻译:USACO 2014 DEC Silver三题
USACO 2014 DEC SILVER 一.题目概览 中文题目名称 回程 马拉松 奶牛慢跑 英文题目名称 piggyback marathon cowjog 可执行文件名 piggyback ma ...
- USACO翻译:USACO 2014 FEB SILVER 三题
USACO 2014 FEB SILVER 一.题目概览 中文题目名称 自动打字 路障 神秘代码 英文题目名称 auto rblock scode 可执行文件名 auto rblock scode 输 ...
- USACO翻译:USACO 2014 JAN三题(2)
USACO 2014 JAN 一.题目概览 中文题目名称 队伍平衡 滑雪录像 滑雪场建设 英文题目名称 bteams recording skicourse 可执行文件名 bteams recordi ...
- USACO翻译:USACO 2014 JAN三题(1)
USACO 2014 JAN 一.题目概览 中文题目名称 滑雪场设计 滑雪降速 滑雪场评级 英文题目名称 skidesign slowdown skilevel 可执行文件名 skidesign sl ...
- USACO翻译:USACO 2014 MARCH Silver三题
USACO 2014 MARCH 一.题目概览 中文题目名称 农田灌溉 懒牛 牛叫 英文题目名称 irrigation lazy mooomoo 可执行文件名 irrigation lazy mooo ...
随机推荐
- Eclipse插件pydev编辑.py文件时报错:unresolved import error.解决办法
在同一个包中import还报unresolved import error.感觉很奇怪,原来需要把当前的包也要添加到System libs中
- Https socket 代理
https直接与服务器通过ssLsocket连接可行 import java.io.InputStream;import java.io.OutputStream;import java.securi ...
- ajax跨域请求,状态码200,F12控制台报错
在接口的地方加上请求头.//跨域请求header('Access-Control-Allow-Origin:*'); 不要在ajax里面加!!!!!!!!!
- java并发编程之美-阅读记录1
1.1什么是线程? 在理解线程之前先要明白什么是进程,因为线程是进程中的一个实体.(线程是不会独立存在的) 进程:是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,线程则是进程中的 ...
- Elasticsearch7.3开启x-pack验证
原文 Elasticsearch7开启x-pack验证 前言 在Elasticsearch7.3,x-pack已经作为默认的插件集成在Elasticsearch里面了,所以无需在bin/elastic ...
- face_recognition人脸识别框架
一.环境搭建 1.系统环境 Ubuntu 17.04 Python 2.7.14 pycharm 开发工具 2.开发环境,安装各种系统包 人脸检测基于dlib,dlib依赖Boost和cmake $ ...
- 进程启动到别的session下(作用)
https://blog.csdn.net/lostwifi/article/details/76472868 WTSGetActiveConsoleSessionId WTSEnumerateSes ...
- irrlicht鬼火
中文鬼火 开源3d引擎 ogre osg等 libpng png图片处理 jpeg jpg图片库
- windows下基于(QPC)实现的微秒级延时
1.为什么会写windows下微秒级延时 在上一篇 实现memcpy()函数及过程总结 中测试memcpy的效率中,测试时间的拷贝效率在微秒级别,需要使用微秒级时间间隔计数. windows下提供Qu ...
- 一张图告诉你js为什么要加分号
当js代码被压缩或者通过其他方式改变你的编码结构时,分号能够给编译器和解析器提供精准的语句拆分. 如图中m 和 c 的例子就能解释为什么这样做.