[ABC218F] Blocked Roads 题解
题目大意
给定一张 \(n\) 个点,\(m\) 条边的无向图,每条边的边权均为 \(1\)。对于每一个 \(i\in [1,m]\) 求出从点 \(1\) 到 \(n\) 的不经过第 \(i\) 条边的最短路长度。
思路分析
我们先在原图上求出从点 \(1\) 到点 \(n\) 的最短路,注意到最短路的路径长度不会超过 \(n-1\),这是因为每个点最多出现一次。
那么对于每一条边,如果它处于原图中从点 \(1\) 到点 \(n\) 的最短路径上,我们就把这条边删掉再跑一遍最短路得出答案,否则答案就是原本的最短路长度。
求一次最短路的时间复杂度是 \(O(n+m)\) 的,所以总时间复杂度是 \(O(n^2+nm)\),可以通过。
代码
#include <iostream>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <cstdio>
#include <vector>
#include <set>
#include <queue>
using namespace std;
const int N=200100;
#define inf 0x3f3f3f3f
int n,m,in1,in2;
int dis[N],vis[N],pre[N];
vector<int> to[N];
set<pair<int,int>> s;
queue<int> q;
pair<int,int> edge[N];
int bfs(int notedge){//直接 bfs 求出最短路
for(int i=1;i<=n;i++) dis[i]=inf,vis[i]=0;
while(!q.empty()) q.pop();
q.push(1);dis[1]=0;
while(!q.empty()){
int now=q.front();q.pop();
if(vis[now]) continue;
vis[now]=1;
for(int v:to[now]){
if(edge[notedge]==make_pair(now,v)) continue;//直接跳过删除的边
if(dis[v]>dis[now]+1){
dis[v]=dis[now]+1;
q.push(v);
if(!notedge) pre[v]=now;
}
}
}
if(dis[n]==inf) return -1;
return dis[n];
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++){
scanf("%d%d",&in1,&in2);
to[in1].push_back(in2);
edge[i]={in1,in2};
}
int len=bfs(0),x=n;
while(x!=1){//从 n 开始倒推
if(!pre[x]) break;
s.insert({pre[x],x});
x=pre[x];
}
for(int i=1;i<=m;i++)
if(s.count({edge[i].first,edge[i].second})) cout<<bfs(i)<<'\n';
else cout<<len<<'\n';
return 0;
}
[ABC218F] Blocked Roads 题解的更多相关文章
- Codeforces GYM 100876 J - Buying roads 题解
Codeforces GYM 100876 J - Buying roads 题解 才不是因为有了图床来测试一下呢,哼( 题意 给你\(N\)个点,\(M\)条带权边的无向图,选出\(K\)条边,使得 ...
- Hdoj 1102.Constructing Roads 题解
Problem Description There are N villages, which are numbered from 1 to N, and you should build some ...
- POJ2749:Building roads——题解
http://poj.org/problem?id=2749 (这个约翰的奶牛真多事…………………………) i表示u与s1连,i+n表示u与s2连. 老规矩,u到v表示取u必须取v. 那么对于互相打架 ...
- CF543B Destroying Roads 题解
看到没有题解就贡献一波呗 分析: 这题其实就是想让我们求一个图中两条最短路的最短(好把更多的边删掉). 我们先考虑一条最短路,别问我我怎么会的显然,就是s和t跑个最短路再用n-就行. 然后就是两条喽! ...
- 洛谷 P2872 [USACO07DEC]道路建设Building Roads 题解
P2872 [USACO07DEC]道路建设Building Roads 题目描述 Farmer John had just acquired several new farms! He wants ...
- 洛谷 SP338 ROADS - Roads 题解
思路 dfs(只不过要用邻接表存)邻接表是由表头结点和表结点两部分组成,其中表头结点存储图的各顶点,表结点用单向链表存储表头结点所对应顶点的相邻顶点(也就是表示了图的边).在有向图里表示表头结点指向其 ...
- LightOJ - 1162 Min Max Roads
LightOJ - 1162 Min Max Roads 题解:在线倍增LCA和模拟ST表 让我们求从\(u->v\)最短路径上的边权最大值和边权最小值,那么我们可以利用倍增思想,类似其\(fa ...
- 【题解】Paid Roads [SP3953] [Poj3411]
[题解]Paid Roads [SP3953] [Poj3411] 传送门:\(\text{Paid}\) \(\text{Roads}\) \(\text{[SP3953]}\) \(\text{[ ...
- 题解报告:poj 2631 Roads in the North(最长链)
Description Building and maintaining roads among communities in the far North is an expensive busine ...
- Blocked Billboard II题解--模拟到崩溃的模拟
前言 比赛真的状态不好(腐了一小会),导致差点爆0. 这个题解真的是在非常非常专注下写出来的,要不然真的心态崩. 题目 题目描述 奶牛Bassie想要覆盖一大块广告牌,她在之前已经覆盖了一小部分广告牌 ...
随机推荐
- jquery获取框值的数据,收藏一下吧
效果图: html代码: <!DOCTYPE html> <html> <head> <title></title> <meta ch ...
- 【HDC.Cloud 2023】华为云区块链分论坛内容值得再读!
摘要:在Web3时代,基础设施不仅仅是传统意义上的服务器.网络等,还包括了区块链节点.智能合约等,这些基础设施的稳定性和可信度直接影响着Web3的发展. 本文分享自华为云社区<[HDC.Clou ...
- 2023年郑州轻工业大学校赛邀请赛jc
比赛时,jxh和myh从头开始看题,我拿着试题册去找签到,很快他们签上了一个数学题,我跟他们说兔子和飞镖可以写,刚开始飞镖这个题我先wa了一次,因为刚开始的思路少考虑了情况,我们队后来改的挺乱,jxh ...
- PDF转换OFD(Java实用版)
前言: 在项目中用到了,就写一下哈 OFD简介 百度百科:https://baike.baidu.com/item/OFD/56227163?fr=aladdin OFD(Open Fixed-lay ...
- Spring-Bean的依赖注入的数据类型
Spring-Bean的依赖注入的数据类型 除了对象的引用可以注入,普通数据类型,集合等都可以在容器中进行注入 数据的三种数据类型 普通数据类型 引用数据类型 集合数据类型 普通数据类型 public ...
- C#中using的三种用法
1. 对命名空间的引用 引入命名空间,在使用类时可以省略复杂的前缀,类似于Java的import. using System.Text; 顺便提一句,C#10新特性支持全局using,如果关键字 gl ...
- Vortex Indicator 构建交易策略
更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流. 今天的文章,我们将为大家介绍一个与DMI(Directional Movement Index)类似,判 ...
- [C#]WPF 分辨率的无关性的问题
什么是WPF的分辨率无关性? 首先得解什么是Dpi(Density independent pixels ,设备无关像素),百度百科的解释DPI是指每英寸的像素,对应界面显示即是屏幕上每英寸的像素. ...
- 【算法】单调栈 & 单调队列学习笔记
1. 单调栈简介 1.1 前言 今天是 2023/1/15,一中寒假集训阶段性的结束了.集训的学习笔记可以在本人 blogs 的[算法]标签栏中找. 马上就要过年了,提前祝大家新年快乐! 1.2 什么 ...
- [grpc]双向tls加密认证
前言 假设gRPC服务端的主机名为qw.er.com,需要为gRPC服务端和客户端之间的通信配置tls双向认证加密. 生成证书 生成ca根证书.生成过程会要求填写密码.CN.ON.OU等信息,记住密码 ...