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;
}

转载于:https://www.cnblogs.com/MashiroSky/p/6440116.html

【bzoj3575】 Hnoi2014—道路堵塞相关推荐

  1. 【BZOJ】3575: [Hnoi2014]道路堵塞

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3575 大概的做法是,按照顺序枚举每一条要删去的边,(假设当前点为$u$,在最短路径上的下一 ...

  2. BZOJ.3575.[HNOI2014]道路堵塞(最短路 动态SPFA)

    题目链接 \(Description\) 给你一张有向图及一条\(1\)到\(n\)的最短路.对这条最短路上的每条边,求删掉这条边后\(1\)到\(n\)的最短路是多少. \(Solution\) 枚 ...

  3. [HNOI 2014]道路堵塞

    Description A国有N座城市,依次标为1到N.同时,在这N座城市间有M条单向道路,每条道路的长度是一个正整数.现在,A国 交通部指定了一条从城市1到城市N的路径,并且保证这条路径的长度是所有 ...

  4. 洛谷3238 HNOI2014 道路阻塞 最短路 线段树(无代码)

    题目链接 题意: 给你一个nnn个点mmm条边的有向带权图,给你输入一条长度为lll的从111到nnn的最短路,问你把最短路上每一条边删去后从111到nnn的最短路长度是多少. n<=1e5,m ...

  5. # HNOI2012 ~ HNOI2018 题解

    HNOI2012 题解 [HNOI2012]永无乡 Tag:线段树合并.启发式合并 联通块合并问题. 属于\(easy\)题,直接线段树合并 或 启发式合并即可. [HNOI2012]排队 Tag:组 ...

  6. “聚沙成塔”——用大数据思维理解生命的复杂体系,数据之眼看显微镜下的复杂生命【数据故事计划二等奖】...

    摘要:细听学长学姐讲故事,或许在他们的路上也有你的身影! [第一届数据故事计划] "数据故事计划"旨在收集各类有关大数据的故事然后进行比赛及相关的宣传和推广.包括同学们接触大数据. ...

  7. 一直在构建工作空间_大华股份殷俊:AI,构建数字世界的基础

    10月27日,由雷锋网 & AI掘金志主办的「全球AI芯片·城市智能峰会」,在深圳大中华喜来登酒店盛大召开. 延续雷锋网大会一贯的高水准.高人气,「全球AI芯片·城市智能峰会」以"城 ...

  8. 智慧城市这份试卷 国外城市怎么答题?

    在近五年,国内智慧城市建设的热潮一直增无减.据媒体梳理,透过各地政府工作报告和"十三五"规划发现,我国95%的副省级城市.76%的地级城市,总计超过500个城市,均在政府工作报告或 ...

  9. DDD专家张逸:复杂与架构演进的关系

    图 张逸 读完需要 25 分钟 速读仅需 5 分钟 张逸,架构编码实践者,IT 文艺工作者,大数据平台架构师,兼爱面向对象与函数式程序设计,热衷于编程语言学习与技艺提升,致力于将主流领域驱动设计(DD ...

最新文章

  1. jdbc连接操作mysql,直接操作和预处理方式
  2. 7-25 雨刷程序功能扩展设计 (100 分)
  3. SAP Commerce Cloud Product Review 的添加逻辑
  4. 插图 引用 同一行两个插图_插图的目的
  5. Linux进程全解1——程序的开始、结束
  6. git php自动发布,使用 Git Hooks 实现自动部署PHP项目
  7. Too many open files的四种解决办法
  8. (11)FPGA面试技能提升篇(Cadence)
  9. lottie-android: 【Android】开源动画库(Airbnb开源)
  10. 单片机中去耦电容的使用
  11. python列表元素提取_python提取list中的元素
  12. 如何修改本地网站的域名
  13. CPU核心、进程、线程
  14. HaaS学习笔记 | 阿里云物联网平台的产品和设备创建明细教程
  15. STM32按键设计一之扫描
  16. [JavaWeb开发中]HTTP 协议的基本格式和Fiddler抓包工具
  17. 远程医疗是指通过计算机技术,E诊断:什么是远程医疗?
  18. idea 断点线程_在IntelliJ IDEA中多线程并发代码的调试方法
  19. AutoDesk CAD激活后闪退解决方法
  20. 这是我的第一个博客有关javascrit的

热门文章

  1. 转:Fedora 17安装后配置|rpmfusion源|Rhythmbox mp3 wma支持插件|smplayer
  2. python无效数据怎么办_Python使用sqlite插入数据无效的原因
  3. L2-003 月饼-团体程序设计天梯赛GPLT
  4. 修改linux的shell限制,Nginx下解决WebShell访问限制问题
  5. 【教程】Linux 系统下对目录扩容的方法
  6. navicat 怎么调试存储过程_Navicat 执行存储过程
  7. 微型计算机原理与接口技术教材,微型计算机原理与接口技术(修订本)(21世纪高职高专规划教材....
  8. 计算机英语os是什么意思,os是什么意思(为什么手机系统有的叫OS)
  9. 简单网页制作html语言,html基本操作,看了这些你就能做简易网页
  10. python创建一个空列表alist_【Python 1-7】Python手把手教程之——详解列表List