POJ 3177 Redundant Paths 双联通分量 割边
http://poj.org/problem?id=3177
这个妹妹我大概也曾见过的~~~我似乎还没写过双联通分量的blog,真是智障。
最少需要添多少条边才能使这个图没有割边。
边双缩点后图变成一棵树,( 树上度数为1的点的数目+1 ) / 2就是答案。
注意:
1.直接缩成一个点的时候特判一下(不需要加边)。
2.找割边同时用栈缩点的话要注意需要缩成一个点的是割边后面所有的点,能缩的时候直接判断末尾有没有到当前点就完事了,如果判断low来找割边后面所有的点是不准确的。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
using namespace std;
#define LL long long
#define pa pair<int,int>
const int maxn=;
const LL minf=(LL)5e17;
int n,m;
struct nod{
int x,y,next;
}e[maxn*];
int head[maxn]={},tot=;
int dfn[maxn]={},low[maxn]={},cnt=,tn=;
int sta[maxn]={},bel[maxn]={},fa[maxn]={},tai=;
int vis[maxn]={};
inline void init(int x,int y){
e[++tot].y=y;e[tot].next=head[x];head[x]=tot;
}
void dfs(int x,int p,int f){
dfn[x]=low[x]=++cnt;sta[++tai]=x;
for(int i=head[x];i;i=e[i].next){
if(i==p)continue;
if(!dfn[e[i].y]){
dfs(e[i].y,i^,x);
low[x]=min(low[x],low[e[i].y]);
}
else low[x]=min(dfn[e[i].y],low[x]);
}
if(low[x]==dfn[x]){
tn++;
while(tai&&sta[tai]!=x){
bel[sta[tai--]]=tn;
}bel[sta[tai--]]=tn;
fa[tn]=f;
}
}
int main(){
scanf("%d%d",&n,&m);
int x,y;
for(int i=;i<=m;i++){
scanf("%d%d",&x,&y);
init(x,y);init(y,x);
}
dfs(,,);
if(tn==){printf("0\n");return ;}
for(int i=;i<=tn;i++){fa[i]=bel[fa[i]];vis[fa[i]]++;}
int ans=;
if(vis[tn]==)ans=;
for(int i=;i<=tn;i++)if(!vis[i])++ans;
printf("%d\n",ans/);
return ;
}
POJ 3177 Redundant Paths 双联通分量 割边的更多相关文章
- POJ 3177 Redundant Paths POJ 3352 Road Construction(双连接)
POJ 3177 Redundant Paths POJ 3352 Road Construction 题目链接 题意:两题一样的.一份代码能交.给定一个连通无向图,问加几条边能使得图变成一个双连通图 ...
- tarjan算法求桥双连通分量 POJ 3177 Redundant Paths
POJ 3177 Redundant Paths Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12598 Accept ...
- POJ 3352 Road Construction ; POJ 3177 Redundant Paths (双联通)
这两题好像是一样的,就是3177要去掉重边. 但是为什么要去重边呢??????我认为如果有重边的话,应该也要考虑在内才是. 这两题我用了求割边,在去掉割边,用DFS缩点. 有大神说用Tarjan,不过 ...
- poj 3177 Redundant Paths 求最少添加几条边成为双联通图: tarjan O(E)
/** problem: http://poj.org/problem?id=3177 tarjan blog: https://blog.csdn.net/reverie_mjp/article/d ...
- POJ 3177 Redundant Paths 无向图边双联通基础题
题意: 给一个无向图,保证任意两个点之间有两条完全不相同的路径 求至少加多少边才能实现 题解: 得先学会一波tarjan无向图 桥的定义是:删除这条边之后该图不联通 一条无向边(u,v)是桥,当且仅当 ...
- POJ 3694Network(Tarjan边双联通分量 + 缩点 + LCA并查集维护)
[题意]: 有N个结点M条边的图,有Q次操作,每次操作在点x, y之间加一条边,加完E(x, y)后还有几个桥(割边),每次操作会累积,影响下一次操作. [思路]: 先用Tarjan求出一开始总的桥的 ...
- [kuangbin带你飞]专题九 连通图E POJ 3177 Redundant Paths
这个题最开始我想的是,直接缩点求双连通分量,连接这些双联通分量不就行了吗? 但是其实是不对的,双连通内部双联通,我们如果任意的连接一条边在这些双联通分量之间,他们之间有没有桥其实并不知道. 我应该是求 ...
- POJ - 3177 Redundant Paths 说说连通分量吧
----我想说说双联通分量还有割点和桥 1.割点(一个点,如果没有这一个点,图就会变得不连通) 2.桥(一条边,断开这条边就会让图不连通) 3.点双连通(没割点的图) 4.边双连通(没桥的图) 5.割 ...
- POJ 3177——Redundant Paths——————【加边形成边双连通图】
Redundant Paths Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Sub ...
随机推荐
- linux中set、unset、export、env、declare,readonly的区别以及用法
set命令显示当前shell的变量,包括当前用户的变量; env命令显示当前用户的变量; export命令显示当前导出成用户变量的shell变量. 每个shell有自己特有 ...
- 【洛谷】【洛谷月赛】4月月赛Round 1/2
洛谷月赛“月”来“月”丧了,一月更比一月丧,做得我十分不“月”…… 4月的两轮月赛,都只会T1,就写一下吧,等待后续更新…… 先看看Round1的T1: [R1T1] 网址:点我 [题意简述] 给定一 ...
- 3 - django-template模板基本使用
目录 1 Template 1.1 模板的基础使用 1.1.1 变量 1.1.2 注释标签 1.1.3 深度查询 1.1.4 内置变量过滤器filter 1.1.5 自定义过滤器之filter 1.1 ...
- 事件,继承EventArgs带有参数的委托
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- Java关于网络编程回顾
一.Java网络编程三要素:1.IP地址:是要确定发送的地址,IP地址一般分为5类. 2.端口:要确定发送的程序是哪一个,端口的范围是0--65535,其中0-1024是系统使用或保留端口 3.协议: ...
- Github授权新的设备ssh接入
为Mac生成公钥 步骤: 检查本机是否已有公钥 ls -la ~/.ssh 将原来的公钥删除 rm -rf ~/.ssh 生成新的公钥(填自己的邮箱),然后除了密码,一路默认 ssh-keygen - ...
- unity 2d 游戏优化之路 遇坑记录
情景说明: unity 出的Android包,在目前一些主流机型跑都没有问题,但是在 小米3 这种比较老的机器上跑,报如下错误 GLSL compilation failed, no infolog ...
- Flask:使用jsonify()转换为JSON的数据在Chrome显示为Unicode编码
Chrome 66,Flask 1.0.2,MongoDB 3.6.3, 创建了一个Flask应用,在将MongoDB中的数据使用PyMongo包获取后,再使用jsonify转换为JSON格式发送回请 ...
- Git简明教程一、基本概念
文本是写给新手的Git入门教程.本文的目的是让新手能够快速了解并开始使用Git,因此只会介绍最基本.同时也是最核心的知识.其中包括使用Git的基本步骤和Git中最常用的命令,以及如何使用GitHub托 ...
- hdu 1007 N个点中输出2点的最小距离的一半
分治法 Sample Input20 01 121 11 13-1.5 00 00 1.50 Sample Output0.710.000.75 # include <iostream> ...