洛谷P1656 炸铁路 (求割边)
用tarjan变种求割边的模板题
其实还可以求出所有的边双(用栈),但本题不需要求。
1 #include<bits/stdc++.h>
2 using namespace std;
3 const int N=1e5+10;
4 int head[N],nxt[N<<1],to[N<<1],tot;
5 pair<int,int> edge[N];
6 int dfn[N],low[N],top/*st[N]*/;
7 int cnt,idx,anscnt=0/*bel[N]*/;
8 //st是用来提取连通块的栈
9 //bel表示每个点所属连通块(这道题不需要用)
10
11 void add(int a,int b){
12 nxt[++tot]=head[a];head[a]=tot;to[tot]=b;
13 nxt[++tot]=head[b];head[b]=tot;to[tot]=a;
14 }
15
16 bool cmp(pair<int,int>x,pair<int,int>y){
17 if(x.first==y.first) return x.second<y.second;
18 else return x.first<y.first;
19 }
20
21 void dfs(int u,int fa){
22 low[u]=dfn[u]=++cnt;
23 //st[++top]=u;
24 for(int i=head[u];i;i=nxt[i]){
25 int v=to[i];
26 if(v!=fa){
27 if(!dfn[v]){//v没有被访问过
28 dfs(v,u);
29 low[u]=min(low[u],low[v]);
30 if(low[v]>dfn[u])//是割边
31 edge[anscnt++]=make_pair(min(u,v),max(u,v));//存入割边
32 }
33 else low[u]=min(low[u],dfn[v]);
34 //v被访问过了,更新u的low值
35 }
36 /*if(low[u]==dfn[u]){ 用来求边双连通分量
37 int v;++idx;
38 do{
39 v=st[top--];
40 bel[v]=idx;
41 }while(v!=u);
42 }*/
43 }
44 }
45
46 int main(){
47 int n,m;
48 scanf("%d%d",&n,&m);
49 for(int i=1;i<=m;i++){
50 int a,b;
51 scanf("%d%d",&a,&b);
52 add(a,b);
53 }
54 for(int i=1;i<=n;i++)
55 if(!dfn[i]) dfs(i,0);
56 sort(edge,edge+anscnt,cmp);//按照题目要求给答案排序
57 for(int i=0;i<anscnt;i++){
58 int a=edge[i].first,b=edge[i].second;
59 printf("%d %d\n",a,b);
60 }
61 }
洛谷P1656 炸铁路 (求割边)的更多相关文章
- 洛谷 P1656 炸铁路
P1656 炸铁路 题目提供者kkksc03 标签图论搜索/枚举洛谷原创 难度普及/提高- 题目描述 因为某国被某红色政权残酷的高压暴力统治.美国派出将军uim,对该国进行战略性措施,以解救涂炭的生灵 ...
- 洛谷—— P1656 炸铁路
P1656 炸铁路 题目描述 因为某国被某红色政权残酷的高压暴力统治.美国派出将军uim,对该国进行战略性措施,以解救涂炭的生灵. 该国有n个城市,这些城市以铁路相连.任意两个城市都可以通过铁路直接或 ...
- 洛谷P1656 炸铁路
题目描述 因为某国被某红色政权残酷的高压暴力统治.美国派出将军uim,对该国进行战略性措施,以解救涂炭的生灵. 该国有n个城市,这些城市以铁路相连.任意两个城市都可以通过铁路直接或者间接到达. uim ...
- P1656 炸铁路
P1656 炸铁路 81通过 286提交 题目提供者kkksc03 标签图论搜索/枚举洛谷原创 难度普及+/提高 提交该题 讨论 题解 记录 最新讨论 暂时没有讨论 题目描述 因为某国被某红色政权残酷 ...
- 多项式求逆元详解+模板 【洛谷P4238】多项式求逆
概述 多项式求逆元是一个非常重要的知识点,许多多项式操作都需要用到该算法,包括多项式取模,除法,开跟,求ln,求exp,快速幂.用快速傅里叶变换和倍增法可以在$O(n log n)$的时间复杂度下求出 ...
- P1656 炸铁路 洛谷
https://www.luogu.org/problem/show?pid=1656 题目描述 因为某国被某红色政权残酷的高压暴力统治.美国派出将军uim,对该国进行战略性措施,以解救涂炭的生灵. ...
- 【洛谷4238】 多项式求逆(NTT,分治)
前言 多项式求逆还是爽的一批 Solution 考虑分治求解这个问题. 直接每一次NTT一下就好了. 代码实现 #include<stdio.h> #include<stdlib.h ...
- 洛谷.4238.[模板]多项式求逆(NTT)
题目链接 设多项式\(f(x)\)在模\(x^n\)下的逆元为\(g(x)\) \[f(x)g(x)\equiv 1\ (mod\ x^n)\] \[f(x)g(x)-1\equiv 0\ (mod\ ...
- 【洛谷p1981】表达式求值
题前废话: 咱也不知道咱写了个什么神奇的代码导致_rqy都看不明白它是怎么re掉的, 代码的大致思路是这样的:对于这样一个中缀表达式,先转化成它的后缀表达式的形式,然后利用P1449 后缀表达式 这道 ...
随机推荐
- TFrecord写入与读取
Protocol buffers are Google's language-neutral, platform-neutral, extensible mechanism for serializi ...
- Javascript 构造函数、原型对象、实例之间的关系
# Javascript 构造函数.原型对象.实例之间的关系 # 创建对象的方式 # 1.new object() 缺点:创建多个对象困难 var hero = new Object(); // 空对 ...
- 【喜讯】新一代大数据任务调度 - Apache DolphinScheduler 社区荣获OSCHINA年度 “最佳技术团队”...
新一代大数据任务调度 - Apache DolphinScheduler 继 11 月 19 日由 InfoQ 举办.在 300+ 参评项目中脱颖而出获得 "2020 年度十大开源新锐项目 ...
- Linux 09 Vim
参考源 https://www.bilibili.com/video/BV187411y7hF?spm_id_from=333.999.0.0 版本 本文章基于 CentOS 7.6 概述 Vi Vi ...
- Redis 05 集合
参考源 https://www.bilibili.com/video/BV1S54y1R7SB?spm_id_from=333.999.0.0 版本 本文章基于 Redis 6.2.6 Set 中的值 ...
- IDEA Git缓慢
有的公司电脑会强制安装一些特定的杀毒软件或者监控软件. 在安装后,我们的 IDEA 可能会出现 Git 相关操作非常缓慢的情况. 虽然用 Git 命令操作不受影响,但终究没有可视化界面直观方便. 解决 ...
- .NET性能优化-快速遍历List集合
简介 System.Collections.Generic.List<T>是.NET中的泛型集合类,可以存储任何类型的数据,因为它的便利和丰富的API,在我们平时会广泛的使用到它,可以说是 ...
- openstack 安装neutron网络服务安装 报错:Unknown operation 'enabled'
注:这个脚本文件有一个地方是错误的,最后一行需要修改一下 # vim /usr/local/bin/iass-install-neutron-controller-gre.sh # 改systemc ...
- gorm tips
约定的列名 type User struct { ID uint // 列名是 `id` Name string // 列名是 `name` Birthday time.Time // 列名是 `bi ...
- Selenium 4 有哪些不一样?
转载请注明出处️ 作者:测试蔡坨坨 原文链接:caituotuo.top/d59b986c.html 你好,我是测试蔡坨坨. 众所周知,Selenium在2021年10月13号发布了Selenium4 ...