poj3177边-双连通分量
题意和poj3352一样。。唯一区别就是有重边,预先判断一下就好了
#include<map>
#include<set>
#include<list>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define pii pair<int,int>
#define C 0.5772156649
#define pi acos(-1.0)
#define ll long long
#define mod 1000000007
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1 using namespace std;
using namespace __gnu_cxx; const double g=10.0,eps=1e-;
const int N=+,maxn=+,inf=0x3f3f3f; vector<int>v[N];
int dfn[N],low[N];
int index,num;
map<int,int>ma[N];
void tarjan(int u,int f)
{
low[u]=dfn[u]=++index;
for(int i=;i<v[u].size();i++)
{
int x=v[u][i];
if(x==f)continue;
if(!dfn[x])
{
tarjan(x,u);
low[u]=min(low[u],low[x]);
if(low[x]>dfn[u])ma[x][u]=ma[u][x]=;
}
else low[u]=min(low[u],dfn[x]);
}
}
void dfs(int u,int f)
{
dfn[u]=num;
for(int i=;i<v[u].size();i++)
{
int x=v[u][i];
if(x!=u&&!dfn[x]&&!ma[x][u])dfs(x,u);
}
}
void init(int n)
{
memset(dfn,,sizeof dfn);
memset(low,,sizeof low);
index=num=;
for(int i=;i<=n;i++)
{
v[i].clear();
ma[i].clear();
}
}
int main()
{
int n,m;
while(~scanf("%d%d",&n,&m))
{
init(n);
for(int i=; i<m; i++)
{
int a,b;
scanf("%d%d",&a,&b);
if(!ma[a][b])
{
// cout<<a<<" "<<b<<endl;
v[a].pb(b);
v[b].pb(a);
ma[a][b]=ma[b][a]=;
}
}
for(int i=;i<=n;i++)ma[i].clear();
for(int i=; i<=n; i++)
if(!dfn[i])
tarjan(i,-);
memset(dfn,,sizeof dfn);
for(int i=; i<=n; i++)
if(!dfn[i])
{
++num;
dfs(i,-);
}
// cout<<num<<endl;
memset(low,,sizeof low);
for(int i=; i<=n; i++)
{
for(int j=; j<v[i].size(); j++)
{
if(dfn[i]!=dfn[v[i][j]])
{
low[dfn[i]]++;
low[dfn[v[i][j]]]++;
}
}
}
int ans=;
for(int i=; i<=num; i++)
{
// cout<<low[i]<<endl;
if(low[i]==)
ans++;
}
printf("%d\n",(ans+)/);
}
return ;
}
/************ ************/
poj3177边-双连通分量的更多相关文章
- POJ3177 边双连通分量
Redundant Paths Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 18580 Accepted: 7711 ...
- poj3177 && poj3352 边双连通分量缩点
Redundant Paths Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12676 Accepted: 5368 ...
- POJ3177 Redundant Paths(边双连通分量+缩点)
题目大概是给一个无向连通图,问最少加几条边,使图的任意两点都至少有两条边不重复路径. 如果一个图是边双连通图,即不存在割边,那么任何两个点都满足至少有两条边不重复路径,因为假设有重复边那这条边一定就是 ...
- poj3177(边双连通分量+缩点)
传送门:Redundant Paths 题意:有n个牧场,Bessie 要从一个牧场到另一个牧场,要求至少要有2条独立的路可以走.现已有m条路,求至少要新建多少条路,使得任何两个牧场之间至少有两条独立 ...
- POJ3177 Redundant Paths 双连通分量
Redundant Paths Description In order to get from one of the F (1 <= F <= 5,000) grazing fields ...
- poj3352 Road Construction & poj3177 Redundant Paths (边双连通分量)题解
题意:有n个点,m条路,问你最少加几条边,让整个图变成边双连通分量. 思路:缩点后变成一颗树,最少加边 = (度为1的点 + 1)/ 2.3177有重边,如果出现重边,用并查集合并两个端点所在的缩点后 ...
- poj3177 Redundant Paths 边双连通分量
给一个无向图,问至少加入多少条边能够使图变成双连通图(随意两点之间至少有两条不同的路(边不同)). 图中的双连通分量不用管,所以缩点之后建新的无向无环图. 这样,题目问题等效于,把新图中度数为1的点相 ...
- POJ3177 Redundant Paths 图的边双连通分量
题目大意:问一个图至少加多少边能使该图的边双连通分量成为它本身. 图的边双连通分量为极大的不存在割边的子图.图的边双连通分量之间由割边连接.求法如下: 求出图的割边 在每个边双连通分量内Dfs,标记每 ...
- POJ2942 Knights of the Round Table[点双连通分量|二分图染色|补图]
Knights of the Round Table Time Limit: 7000MS Memory Limit: 65536K Total Submissions: 12439 Acce ...
随机推荐
- Ubuntu 16.04下编译安装Apache2.4和PHP7结合
Ubuntu 16.04下编译安装Apache2.4和PHP7结合,并安装PDOmysql扩展. 1.编译安装apache2.4.20 1 第一步: ./configure --prefix=/usr ...
- git学习之时光机穿梭(四)
时光机穿梭 我们已经成功地添加并提交了一个readme.txt文件,现在,是时候继续工作了,于是,我们继续修改readme.txt文件,改成如下内容: Git is a distributed ver ...
- gulp安装教程
1.安装nodejs并选装cnpm: npm install cnpm -g --registry=https://registry.npm.taobao.org 2.全局安装gulp: cnpm i ...
- c/c++的一些小知识点2
- c++的检测的确比C++更严格
见下面代码 #include <stdio.h> #include <stdlib.h> #include <time.h> enum guess { paper, ...
- 1.BeanFactory解析
package org.springframework.beans.factory; import org.springframework.beans.BeansException; import o ...
- Every norm is a convex function
https://ipfs.io/ipfs/QmXoypizjW3WknFiJnKLwHCnL72vedxjQkDDP1mXWo6uco/wiki/Convex_function.html Every ...
- 我的Android进阶之旅------>Android无第三方Jar包的源代报错:The current class path entry belongs to container ...的解决方法
今天使用第三方Jar包afinal.jar时候,想看一下源代码,无法看 然后像添加jar对应的源码包,也无法添加相应的源代码,报错如下:The current class path entry bel ...
- Symfony3 查询搜索功能DQL语句like查询
//前台页面代码 <form method="GET" action="{{ path('staff_index') }}" name="sea ...
- HDU - 1728 逃离迷宫 【BFS】
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1728 思路 BFS 一开始 从开始位置 往四周走 如果能走的话 这个时候 转弯次数都是0 我们的标记不 ...