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

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3575


 

  大概的做法是,按照顺序枚举每一条要删去的边,(假设当前点为$u$,在最短路径上的下一个点是$v$)然后强制不走${u->v}$这条边,将$u$入队,做一遍以$1$号点为原点的SPFA(这个SPFA的dis值是要保留的,因为具有单调性同时也保证了复杂度),如果可以更新到一个最短路径上的点$x$,显然就说明在最短路径$u->x$的所有边被断去之后都可以由这条路径到达汇点,用一个堆维护最小值即可。

  注意:SPFA时最短路径上的点不能入队。因为某一条边不走的最短路相当于$1$--沿最短路-->$p1$-->……-->$p2$--沿最短路-->$n$

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<vector>
 5 #include<cstdlib>
 6 #include<cmath>
 7 #include<queue>
 8 #include<map>
 9 #include<cstring>
10 using namespace std;
11 #define maxn 1001000
12 #define inf 0x7fffffff
13 #define SIZE 1000000
14 #define llg int
15 #define yyj(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);
16 llg n,m,posn,pos[maxn],dis[maxn],dl[maxn],head,tail,l,sp[maxn],bj[maxn],U,V,Z,dis_T[maxn];
17 vector<llg>a[maxn],val[maxn];
18 
19 struct Edge{llg x,y,z;}e[maxn];
20 
21 struct node
22 {
23     llg pos,val,wz;
24     bool operator<(const node&a)const{
25         return a.val<val;
26     }
27 };
28 
29 priority_queue<node>q;
30 
31 void init()
32 {
33     cin>>n>>m>>l;
34     llg x,y,z;
35     for (llg i=1;i<=m;i++)
36     {
37         scanf("%d%d%d",&x,&y,&z);
38         a[x].push_back(y),val[x].push_back(z);
39         e[i].x=x; e[i].y=y; e[i].z=z;
40     }
41     for (llg i=2;i<=n;i++) dis[i]=inf;
42     for (llg i=1;i<=l;i++)
43     {
44         scanf("%d",&sp[i]);
45         pos[e[sp[i]].x]=++posn;
46     }
47     for (llg i=l;i>=1;i--) dis_T[e[sp[i]].x]=dis_T[e[sp[i]].y]+e[sp[i]].z;
48     pos[n]=++posn;
49 }
50 
51 void spfa(llg x)
52 {
53     llg v,w,st=x;
54     dl[1]=x; head=0; tail=1;
55     do
56     {
57         head%=SIZE;
58         x=dl[++head]; bj[x]=0;
59         w=a[x].size();
60         for (llg i=0;i<w;i++)
61         {
62             v=a[x][i];
63             if (v==V && x==U && Z==val[x][i]) continue;
64             if (dis[v]<dis[x]+val[x][i]) continue;
65             dis[v]=dis[x]+val[x][i];
66             if (!bj[v] && !pos[v])
67             {
68                 bj[v]=1;
69                 tail%=SIZE; dl[++tail]=v;
70             }
71             if (pos[v])
72             {
73                 if (pos[v]<=pos[st]) continue;
74                 node r;
75                 r.val=dis[v]+dis_T[v]; r.pos=pos[v]; r.wz=v;
76                 q.push(r);
77             }
78         }
79     }while (head!=tail);
80 }
81 
82 int main()
83 {
84     yyj("road");
85     init();
86     for (llg i=1;i<=l;i++) 
87     {
88         U=e[sp[i]].x,V=e[sp[i]].y,Z=e[sp[i]].z;
89         if (i!=1) dis[e[sp[i]].x]=dis[e[sp[i-1]].x]+e[sp[i-1]].z;
90         spfa(e[sp[i]].x);
91         while (!q.empty())
92         {
93             if (q.top().pos<=pos[e[sp[i]].x]) q.pop();else break;
94         }
95         if (q.empty()) puts("-1");else printf("%d\n",q.top().val);
96     }
97     return 0;
98 }

 


 

转载于:https://www.cnblogs.com/Dragon-Light/p/6430742.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/372897.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

结合使用slf4j和Logback教程

在当前文章中&#xff0c;我将向您展示如何配置您的应用程序以使用slf4j和logback作为记录器解决方案。 Java简单日志记录外观&#xff08;slf4j&#xff09;是各种日志记录框架的简单外观&#xff0c;例如JDK日志记录&#xff08;java.util.logging&#xff09;&#xff0c;lo…

mysql 分组top_MySQL:如何查询出每个分组中的 top n 条记录?

问题描述需求&#xff1a;查询出每月 order_amount(订单金额) 排行前3的记录。例如对于2019-02&#xff0c;查询结果中就应该是这3条&#xff1a;解决方法MySQL 5.7 和 MySQL 8.0 有不同的处理方法。1. MySQL 5.7我们先写一个查询语句。根据 order_date 中的年、月&#xff0c;…

ACM第四站————最小生成树(普里姆算法)

对于一个带权的无向连通图&#xff0c;其每个生成树所有边上的权值之和可能不同&#xff0c;我们把所有边上权值之和最小的生成树称为图的最小生成树。 普里姆算法是以其中某一顶点为起点&#xff0c;逐步寻找各个顶点上最小权值的边来构建最小生成树。 其中运用到了回溯&#…

利用jenkins的api来完成相关工作流程的自动化

[本文出自天外归云的博客园] 背景 1. 实际工作中涉及到安卓客户端方面的测试&#xff0c;外推或运营部门经常会有很多的渠道&#xff0c;而每个渠道都对应着一个app的下载包&#xff0c;这些渠道都记录在安卓项目下的一个渠道列表文件中。外推或运营部门经常会有新的渠道产生&a…

拥有成本分析:Oracle WebLogic Server与JBoss

Crimson Consulting Group 撰写的非常有趣的白皮书 &#xff0c;比较了Weblogic和JBoss之间的拥有成本 。 尽管JBoss是免费的&#xff0c;但该白皮书却严肃地宣称&#xff0c;从长远来看&#xff0c;Weblogic更便宜。 尽管此研究是由Oracle赞助的&#xff0c;但它看起来非常严肃…

mysql limit 分页 0_Mysql分页之limit用法与limit优化

Mysql limit分页语句用法与Oracle和MS SqlServer相比&#xff0c;mysql的分页方法简单的让人想哭。--语法&#xff1a;SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset--举例&#xff1a;select * from table limit 5; --返回前5行select * from table limit 0…

与硒的集成测试

总览 我已经使用了一段时间&#xff0c;遇到了一些似乎可以使生活更轻松的事情。 我以为可以将其作为教程分享&#xff0c;所以我将向您介绍这些部分&#xff1a; 使用Maven设置Web项目&#xff0c;配置Selenium以在CI上作为集成测试运行 寻找使用“页面对象”为网站中的页面…

linux每天一小步---sed命令详解

1 命令功能 sed是一个相当强大的文件处理编辑工具&#xff0c;sed用来替换&#xff0c;删除&#xff0c;更新文件中的内容。sed以文本行为单位进行处理&#xff0c;一次处理一行内容。首先sed吧当前处理的行存储在临时的缓冲区中&#xff08;称为模式空间pattern space&#xf…

mysql trace工具_100% 展示 MySQL 语句执行的神器-Optimizer Trace

在上一篇文章《用Explain 命令分析 MySQL 的 SQL 执行》中&#xff0c;我们讲解了 Explain 命令的详细使用。但是它只能展示 SQL 语句的执行计划&#xff0c;无法展示为什么一些其他的执行计划未被选择&#xff0c;比如说明明有索引&#xff0c;但是为什么查询时未使用索引等。…

MOXy作为您的JAX-RS JSON提供程序–服务器端

在以前的系列文章中&#xff0c;我介绍了如何利用EclipseLink JAXB&#xff08;MOXy&#xff09;创建RESTful数据访问服务。 在本文中&#xff0c;我将介绍在服务器端利用MOXy的新JSON绑定添加对基于JAXB映射的JSON消息的支持有多么容易。 MOXy作为您的JAX-RS JSON提供程序–服…

006_过滤器

过滤器 过滤器&#xff08;Filter&#xff09;把附加逻辑注入到MVC框的请求处理&#xff0c;实现了交叉关注。所谓交叉关注&#xff08;Cross-Cutting Concerns&#xff09;&#xff0c;是指可以用于整个应用程序&#xff0c;而又不适合放置在某个局部位置的功能&#xff0c;否…

Android_项目文件结构目录分析

android项目文件结构目录分析 在此我们新建了一个helloworld的项目&#xff0c;先看一些目录结构&#xff1a; 这么多的文件夹和文件中&#xff0c;我们重点关注是res目录、src目录、AndroidManifest.xml文件&#xff1a; 一、res目录主要是用来存放android项目的各种资源文件&…

实体 联系 模型mysql_数据库系统概念读书笔记――实体-联系模型_MySQL

bitsCN.com数据库系统概念读书笔记——实体-联系模型前言为了重新回顾我写的消息系统架构&#xff0c;我需要重新读一下数据库系统概念的前三章&#xff0c;这里简单的做一个笔记&#xff0c;方便自己回顾基本概念实体-联系(E-R)数据模型基于对现实世界的这样一种认识&#xff…

使用Twitter Bootstrap,WebSocket,Akka和OpenLayers玩(2.0)

原始帖子可以在ekito网站上找到。 对于我们的一位客户&#xff0c;我们需要显示一张具有实时更新的车辆位置的地图。 因此&#xff0c;我开始使用Play制作原型&#xff01; 框架及其最新发布的版本2.0&#xff0c;使用Java API。 我从Play的网络聊天室开始&#xff01; 2.0个样…

同步时间

同步时间 [rootlocalhost 03]# ntpdate 0.centos.pool.ntp.org 转载于:https://www.cnblogs.com/cglWorkBook/p/5556920.html

mysql 5.6.23免安装_mysql5.6.23免安装配置

1.官网下载&#xff0c;并解压2.环境变量&#xff0c;path下&#xff0c;追加mysql的bin路径D:\Program Files\mysql\bin;3.mysql目录下的my-default.ini重命名为my.ini&#xff0c;并添加下面的代码basedirD:/Program Files/mysql #mysql路径datadirD:/Program Files/mysql/d…

在Intellij IDEA中运行Vaadin应用

在本文中&#xff0c;我将向您展示如何使用Intellij IDEA运行vaadin应用程序。 Vaadin提供了一些用于Eclipse和Netbeans的插件。 但是对于Intellij IDEA来说&#xff0c;还没有插件。 但是部署vaadin应用程序比其他两个IDE容易。 这是您要遵循的步骤。 1.首先创建一个新项目&am…

mysql主从数据库

Mysql主从配置&#xff0c;实现读写分离 大型网站为了软解大量的并发访问&#xff0c;除了在网站实现分布式负载均衡&#xff0c;远远不够。到了数据业务层、数据访问层&#xff0c;如果还是传统的数据结构&#xff0c;或者只是单单靠一台服务器扛&#xff0c;如此多的数据库连…

安装openstack时遇到的错误

学习opensatck的第一步是安装DevStack来进行本机操作 1. 下面命令没有权限&#xff0c;解决办法&#xff1a;切换到root用户下执行sudo -s echo "stack ALL(ALL) NOPASSWD: ALL" >> /etc/sudoers2. 执行下面命令提示没有git&#xff0c;解决办法&#xff1a;su…