【bzoj3575】 Hnoi2014—道路堵塞
http://www.lydsy.com/JudgeOnline/problem.php?id=3575 (题目链接)
题意
给出一个有向图和一条最短路,问最短路上任意一条边断掉,此时的最短路是多少。
Solution
听说这道题正解被江哥插了。。。右转题解→_→:lmy学长
平衡树用堆就可以了。
细节
用栈来存要加入堆中的点,不然不好消除标记。
代码
// bzoj3575
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<queue>
#define LL long long
#define inf (1ll<<60)
#define Pi acos(-1.0)
#define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);
using namespace std; const int maxn=200010;
int head[maxn],dis[maxn],vis[maxn],st[maxn],in[maxn];
int n,m,L,cnt,id[maxn],ord[maxn],suf[maxn];
struct edge {int from,to,next,w;}e[maxn<<1];
struct data {
int num,len;
friend bool operator < (const data a,const data b) {
return a.len>b.len;
}
};
priority_queue<data> T; inline void link(int u,int v,int w) {
e[++cnt]=(edge){u,v,head[u],w};head[u]=cnt;
}
inline void SPFA(int u,int v,int k) {
queue<int> q;q.push(u);
int top=0;
while (!q.empty()) {
int x=q.front();q.pop();
vis[x]=0;
for (int i=head[x];i;i=e[i].next) if (i!=k) {
if (ord[e[i].to]>ord[u]) {
dis[e[i].to]=min(dis[e[i].to],dis[x]+e[i].w);
if (!in[e[i].to]) in[e[i].to]=1,st[++top]=e[i].to;
}
else if (dis[e[i].to]>dis[x]+e[i].w) {
dis[e[i].to]=dis[x]+e[i].w;
if (!vis[e[i].to]) vis[e[i].to]=1,q.push(e[i].to);
}
}
}
for (int i=1;i<=top;i++) {
T.push((data){ord[st[i]],suf[st[i]]+dis[st[i]]});
in[st[i]]=0;
}
}
int main() {
scanf("%d%d%d",&n,&m,&L);
for (int u,v,w,i=1;i<=m;i++) {
scanf("%d%d%d",&u,&v,&w);
link(u,v,w);
}
ord[1]=1;
for (int i=1;i<=L;i++) scanf("%d",&id[i]),ord[e[id[i]].to]=i+1;
for (int i=L;i>=1;i--) suf[e[id[i]].from]=suf[e[id[i]].to]+e[id[i]].w;
memset(dis,0x7f,sizeof(dis));dis[1]=0;
for (int i=1;i<=L;i++) {
int u=e[id[i]].from,v=e[id[i]].to;
SPFA(u,v,id[i]);
while (!T.empty() && T.top().num<ord[v]) T.pop();
printf("%d\n",T.empty() ? -1 : T.top().len);
dis[v]=dis[u]+e[id[i]].w;
}
return 0;
}
【bzoj3575】 Hnoi2014—道路堵塞的更多相关文章
- bzoj3575[Hnoi2014]道路堵塞
http://www.lydsy.com/JudgeOnline/problem.php?id=3575 总赶脚第二题总是比第三题难...... 好吧,这题一点思路都没有 听说用民科可以过掉大部分数据 ...
- BZOJ3575 HNOI2014 道路阻塞
3575: [Hnoi2014]道路堵塞 Time Limit: 10 Sec Memory Limit: 128 MB Description A国有N座城市,依次标为1到N.同时,在这N座城市间 ...
- 洛谷 [HNOI2014]道路堵塞 解题报告
[HNOI2014]道路堵塞 题意 给一个有向图并给出一个这个图的一个\(1\sim n\)最短路,求删去这条最短路上任何一条边后的最短路. 又事SPFA玄学... 有个结论,新的最短路一定是\(1\ ...
- 动态删边SPFA: [HNOI2014]道路堵塞
[HNOI2014]道路堵塞 题目描述 $A$ 国有 $N$座城市,依次标为$1$到$N$.同时,在这$N$座城市间有$M$条单向道路,每条道路的长度是一个正整数.现在,$A$国交通部指定了一条从城市 ...
- bzoj 3575: [Hnoi2014]道路堵塞
Description A 国有N座城市,依次标为1到N.同时,在这N座城市间有M条单向道路,每条道路的长度是一个正整数.现在,A国交通部指定了一条从城市1到城市N的路径, 并且保证这条路径的长度是所 ...
- [HNOI2014]道路堵塞
题目描述 A国有N座城市,依次标为1到N.同时,在这N座城市间有M条单向道路,每条道路的长度是一个正整数.现在,A国交通部指定了一条从城市1到城市N的路径,并且保证这条路径的长度是所有从城市1到城市N ...
- luogu P3238 [HNOI2014]道路堵塞
传送门 这什么题啊,乱搞就算了,不知道SPFA已经死了吗 不对那个时候好像还没死 暴力就是删掉边后跑Dijkstra SPFA 然后稍微分析一下,可以发现题目中要求的不经过最短路某条边的路径,一定是先 ...
- BZOJ.3575.[HNOI2014]道路堵塞(最短路 动态SPFA)
题目链接 \(Description\) 给你一张有向图及一条\(1\)到\(n\)的最短路.对这条最短路上的每条边,求删掉这条边后\(1\)到\(n\)的最短路是多少. \(Solution\) 枚 ...
- 【BZOJ】3575: [Hnoi2014]道路堵塞
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3575 大概的做法是,按照顺序枚举每一条要删去的边,(假设当前点为$u$,在最短路径上的下一 ...
随机推荐
- SQLAlchemy并发写入引发的思考
背景 近期公司项目中加了一个积分机制,用户登录签到会获取登录积分,但会出现一种现象就是用户登录时会增加双倍积分,然后生成两个积分记录.此为问题 问题分析 项目采用微服务架构,下图为积分机制流程 ...
- SICP读书笔记 2.1
SICP CONCLUSION 让我们举起杯,祝福那些将他们的思想镶嵌在重重括号之间的Lisp程序员 ! 祝我能够突破层层代码,找到住在里计算机的神灵! 目录 1. 构造过程抽象 2. 构造数据抽象 ...
- 【坚持】Selenium+Python学习记录 DAY10
2018/05/31-2018/06/1 [官方文档](https://www.jetbrains.com/help/pycharm/set-up-a-git-repository.html) 通过p ...
- SMR解析
SMR描述 SMR(Shingled Magnetic Recording)叠瓦式磁记录盘是一种采用新型磁存储技术的高容量磁盘.SMR盘将盘片上的数据磁道部分重叠,就像屋顶上的瓦片一样,这种技术被称为 ...
- 【异常检测】Isolation forest 的spark 分布式实现
1.算法简介 算法的原始论文 http://cs.nju.edu.cn/zhouzh/zhouzh.files/publication/icdm08b.pdf .python的sklearn中已经实现 ...
- 亚马逊如何变成 SOA(面向服务的架构)
. 亚马逊公司不仅是世界最大的网络书店,还是世界最大的云服务商.它是怎么实现从电商到云商的转变呢? 一切都是CEO杰夫·贝索斯促成的,他对市场有着超乎常人的理解和预见. 2. 2000年前后,贝索斯有 ...
- 随手记录-linux-Linux目录结构
转:别人的 装完Linux,首先需要弄清Linux 标准目录结构 / root —?启动Linux时使用的一些核心文件.如操作系统内核.引导程序Grub等. home —?存储普通用户的个人文件 ft ...
- VS code MacOS 环境搭建
环境:MacBook Pro 参考博客 为了动手开发AI代码,我需要安装一个VS code. 开始我以为是安装visual studio呢.我装过visual studio2017. VS code是 ...
- 微信小程序——音阶练耳 宣传页面
音阶练耳是什么? 音阶练耳小程序是一款听音练习音阶,拥有简介界面的交互式小程序,以虚拟钢琴为辅助乐器,应用于日常练习,涵盖了五个八度内26种调式.以及下行中的所有调式与和声小调式的衍生,提高辨认音阶的 ...
- 20162328蔡文琛 大二week07
20162328 2017-2018-1 <程序设计与数据结构>第7周学习总结 教材学习内容总结 树是非线性结构,其元素组织为一个层次结构. 树的度表示树种任意节点的最大子节点数. 有m个 ...