题目:http://poj.org/problem?id=3177

找桥,缩点,总之都是板子;

对于每个叶子,互相连一条边即可;若最后剩下一个,则去和根节点连边;

所以叶子节点数+1再/2即答案。

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m,ct=,head[],reg[],c[],dc,dfn[],low[],tim,ans;
bool bri[];
struct N{
int to,next;
N(int t=,int n=):to(t),next(n) {}
}edge[],dcc[];
void tarjan(int x,int e)
{
tim++;
dfn[x]=tim;
low[x]=tim;
for(int i=head[x];i;i=edge[i].next)
{
int u=edge[i].to;
// if(i==(e^1))continue;
if(!dfn[u])
{
tarjan(u,i);
low[x]=min(low[x],low[u]);
if(low[u]>dfn[x])bri[i]=,bri[i^]=;//!!!
}
else if(i!=(e^))
low[x]=min(low[x],dfn[u]);
}
}
void dfs(int x)
{
c[x]=dc;
for(int i=head[x];i;i=edge[i].next)
{
int u=edge[i].to;
if(!c[u]&&!bri[i])
dfs(u);
}
}
int main()
{
while(scanf("%d%d",&n,&m)==)
{
memset(head,,sizeof head);
memset(reg,,sizeof reg);
memset(c,,sizeof c);
memset(dfn,,sizeof dfn);
memset(low,,sizeof low);
memset(bri,,sizeof bri);
ct=;ans=;dc=;tim=;
for(int i=;i<=m;i++)
{
int x,y;
scanf("%d%d",&x,&y);
edge[++ct]=N(y,head[x]);head[x]=ct;
edge[++ct]=N(x,head[y]);head[y]=ct;
}
tarjan(,);
for(int i=;i<=n;i++)
{
if(c[i])continue;
dc++;
dfs(i);
}
for(int i=;i<=ct;i+=)
{
int u=edge[i].to,v=edge[i^].to;
if(c[u]==c[v])continue;
reg[c[u]]++;reg[c[v]]++;
}
for(int i=;i<=dc;i++)
if(reg[i]==)ans++;
printf("%d\n",(ans+)/);
}
return ;
}

poj3177重修道路——边双连通分量缩点的更多相关文章

  1. POJ3177 Redundant Paths(边双连通分量+缩点)

    题目大概是给一个无向连通图,问最少加几条边,使图的任意两点都至少有两条边不重复路径. 如果一个图是边双连通图,即不存在割边,那么任何两个点都满足至少有两条边不重复路径,因为假设有重复边那这条边一定就是 ...

  2. HDU 3686 Traffic Real Time Query System(双连通分量缩点+LCA)(2010 Asia Hangzhou Regional Contest)

    Problem Description City C is really a nightmare of all drivers for its traffic jams. To solve the t ...

  3. 训练指南 UVA - 11324(双连通分量 + 缩点+ 基础DP)

    layout: post title: 训练指南 UVA - 11324(双连通分量 + 缩点+ 基础DP) author: "luowentaoaa" catalog: true ...

  4. poj3177 && poj3352 边双连通分量缩点

    Redundant Paths Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 12676   Accepted: 5368 ...

  5. poj3177(边双连通分量+缩点)

    传送门:Redundant Paths 题意:有n个牧场,Bessie 要从一个牧场到另一个牧场,要求至少要有2条独立的路可以走.现已有m条路,求至少要新建多少条路,使得任何两个牧场之间至少有两条独立 ...

  6. POJ3694 Network(边双连通分量+缩点+LCA)

    题目大概是给一张图,动态加边动态求割边数. 本想着求出边双连通分量后缩点,然后构成的树用树链剖分+线段树去维护路径上的边数和..好像好难写.. 看了别人的解法,这题有更简单的算法: 在任意两点添边,那 ...

  7. POJ3352 Road Construction 双连通分量+缩点

    Road Construction Description It's almost summer time, and that means that it's almost summer constr ...

  8. HDU 4612 Warm up (边双连通分量+缩点+树的直径)

    <题目链接> 题目大意:给出一个连通图,问你在这个连通图上加一条边,使该连通图的桥的数量最小,输出最少的桥的数量. 解题分析: 首先,通过Tarjan缩点,将该图缩成一颗树,树上的每个节点 ...

  9. poj 3177 Redundant Paths(边双连通分量+缩点)

    链接:http://poj.org/problem?id=3177 题意:有n个牧场,Bessie 要从一个牧场到另一个牧场,要求至少要有2条独立的路可以走.现已有m条路,求至少要新建多少条路,使得任 ...

随机推荐

  1. jquery 获取 outerHtml

    在开发过程中,jQuery.html() 是获取当前节点下的html代码,并不包括当前节点本身的代码,然后我们有时候确须要.找遍jQuery api文档也没有不论什么方法能够拿到. 看到有的人通过pa ...

  2. 【Java】 Spring依赖注入小试牛刀:编写第一个Spring ApplicationContext Demo

    0  Spring的依赖注入大致是这样工作的: 将对象如何构造(ID是什么?是什么类型?给属性设置什么值?给构造函数传入什么值?)写入外部XML文件里.在调用者需要调用某个类时,不自行构造该类的对象, ...

  3. [转]screen 的使用

    当我们使用securecrt,putty, 等连接远程服务器时,如果正在执行一个程序,比如shell 脚本,退出当前的窗口会导致程序终止!其原理如下: 根据POSIX.1定义: 1 挂断信号(SIGH ...

  4. bugzilla 系列1安装

    安装好mysql yum install gcc perl* mod_perl-devel -y wget https://ftp.mozilla.org/pub/mozilla.org/webtoo ...

  5. JavaWeb学习总结第二篇--第一个JavaWeb程序

    JavaWeb学习总结第二篇—第一个JavaWeb程序 最近我在学院工作室学习并加入到研究生的项目中,在学长学姐的带领下,进入项目实践中,为该项目实现一个框架(用已有框架进行改写).于是我在这里记录下 ...

  6. EasyPlayerPro Windows播放器实时流进行本地缓冲区即时回放功能实现

    背景描述 参照国内视频监控行业监控软件,实现当前视频的即时回放功能,例如: 监控人员发现刚刚的某个视频点有可疑,就像录像回放一样,想倒回去看一下,但又不想切换到录像回放界面, 此处就体现即时回放的价值 ...

  7. Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)

    sftp -b batchfile username@remote_host 报错:Permission denied (publickey,gssapi-keyex,gssapi-with-mic, ...

  8. 远程服务器上的weblogic项目管理(四)filelock not found错误解决方法

    重启weblogic时如果有残余进程没有kill,启动时便可能会造成filelock not found,文件锁未找到错误,解决方法如下: 删掉Domain下的*.lok文件:(如果不熟悉文件路径推荐 ...

  9. [2018-05-27]配置VSTS认证方式使用Personal Access Token

    本文介绍下如何配置VSTS(visual studio team service,其实就是微软SaaS版的TFS)通过Personal Access Token访问其下的Git代码库. 问题 使用gi ...

  10. jQuery的事件绑定和解除

    1 . 绑定事件 语法 : bind(type,data,fn) 描述 : 为每一个匹配的特定元素(像 click)绑定一个事件处理器函数. type(String) : 事件类型 data(Obje ...