题目链接

题意 : 一个无向连通图,最少添加几条边使其成为一个边连通分量 。

思路 :先用Tarjan缩点,缩点之后的图一定是一棵树,边连通度为1。然后找到所有叶子节点,即度数为1的节点的个数leaf,最后要添加的边的条数就是(leaf+1)/2 ;

 //
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std ; int head[],fb[],low[],dfn[] ,degree[];
int cnt,timee ,ans ;
struct node
{
int u ;
int v ;
int next ;
}p[]; void tarjan(int u)
{
dfn[u] = low[u] = ++timee ;
for(int i = head[u] ; i != - ; i = p[i].next)
{
int v = p[i].v ;
if(fb[i^]) continue ;
fb[i] = ;
if(dfn[v]) low[u] = min(low[u],dfn[v]) ;
else
{
tarjan(v) ;
low[u] = min(low[v],low[u]) ;
//if(low[v] > dfn[u])
// ans /++ ;
}
}
}
void Init()
{
cnt = timee = ans = ;
memset(head,-,sizeof(head)) ;
memset(dfn,,sizeof(dfn)) ;
memset(low,,sizeof(low)) ;
memset(fb,,sizeof(fb)) ;
memset(degree,,sizeof(degree)) ;
}
void addedge(int u,int v)
{
p[cnt].u = u ;
p[cnt].v = v ;
p[cnt].next = head[u] ;
head[u] = cnt ++ ;
p[cnt].u = v ;
p[cnt].v = u ;
p[cnt].next = head[v] ;
head[v] = cnt ++ ;
}
int main()
{
int F,R ;
while(scanf("%d %d",&F,&R) != EOF)
{
Init() ;
int x,y ;
for(int i = ; i < R ; i++)
{
scanf("%d %d",&x,&y) ;
addedge(x-,y-) ;
}
tarjan() ;
for(int i = ; i < F ; i++)
{
for(int j = head[i] ; j != - ; j = p[j].next)
{
if(low[i] != low[p[j].v])
degree[low[i]] ++ ; }
}
for(int i = ; i <= F ; i ++)// 时间戳是从1开始的,所以low的值是可以到达F的,
if(degree[i] == )
ans ++ ;
printf("%d\n",(ans + )/) ;
}
return ;
}

POJ 3177 Redundant Paths(Tarjan)的更多相关文章

  1. POJ 3177 Redundant Paths (tarjan边双连通分量)

    题目连接:http://poj.org/problem?id=3177 题目大意是给定一些牧场,牧场和牧场之间可能存在道路相连,要求从一个牧场到另一个牧场要有至少两条以上不同的路径,且路径的每条pat ...

  2. poj 3177 Redundant Paths(tarjan边双连通)

    题目链接:http://poj.org/problem?id=3177 题意:求最少加几条边使得没对点都有至少两条路互通. 题解:边双连通顾名思义,可以先求一下连通块显然连通块里的点都是双连通的,然后 ...

  3. POJ 3177 Redundant Paths(边双连通的构造)

    Redundant Paths Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13717   Accepted: 5824 ...

  4. POJ - 3177 Redundant Paths(边双连通分支)(模板)

    1.给定一个连通的无向图G,至少要添加几条边,才能使其变为双连通图. 2. 3. //边双连通分支 /* 去掉桥,其余的连通分支就是边双连通分支了.一个有桥的连通图要变成边双连通图的话, 把双连通子图 ...

  5. POJ 3352 Road Construction ; POJ 3177 Redundant Paths (双联通)

    这两题好像是一样的,就是3177要去掉重边. 但是为什么要去重边呢??????我认为如果有重边的话,应该也要考虑在内才是. 这两题我用了求割边,在去掉割边,用DFS缩点. 有大神说用Tarjan,不过 ...

  6. POJ 3177 Redundant Paths(重边标记法,有重边的边双连通分支)

    大致题意: 为了保护放牧环境,避免牲畜过度啃咬同一个地方的草皮,牧场主决定利用不断迁移牲畜进行喂养的方法去保护牧草.然而牲畜在迁移过程中也会啃食路上的牧草,所以如果每次迁移都用同一条道路,那么该条道路 ...

  7. POJ - 3177 Redundant Paths (边双连通缩点)

    题意:在一张图中最少可以添加几条边,使其中任意两点间都有两条不重复的路径(路径中任意一条边都不同). 分析:问题就是最少添加几条边,使其成为边双连通图.可以先将图中所有边双连通分量缩点,之后得到的就是 ...

  8. POJ 3177 Redundant Paths(边双连通分量)

    [题目链接] http://poj.org/problem?id=3177 [题目大意] 给出一张图,问增加几条边,使得整张图构成双连通分量 [题解] 首先我们对图进行双连通分量缩点, 那么问题就转化 ...

  9. Poj 3177 Redundant Paths (双连通分支+节点统计)

    题目描述: 给出一个无向的连通图,问最少加入几条边,才能使所给的图变为无桥的双连通图? 解题思路: 可以求出原图中所有的不包含桥的所有最大连通子图,然后对连通子图进行标记缩点,统计度为1的叶子节点le ...

随机推荐

  1. jQuery无缝滚动插件

    插件代码 ;(function ($) { // jQuery marquee 插件 $.fn.marquee = function (options) { // 默认设置 var defaults ...

  2. Oracle用户密码过期问题解决

    一.用户密码即将过期,导致autotrace无法打开           如果用户密码即将过期,在登录数据库时会收到如下提示:           ERROR:            ORA-2800 ...

  3. 条款20:以const-reference传递替换by-value传递

    缺省情况下,C++中函数参数的传递方式为by-value.即函数都是以实际参数的副本进行传递,而函数返回的也是一个副本.考虑如下实例程序: #include <iostream> clas ...

  4. python中将字符串转化为本地变量

    var = 123445s= locals()['var']s2=vars()['var'] print s,s2

  5. 软件工程随堂小作业—— 寻找“水王”(C++)

    一.设计思路 (1)输入发帖ID记录表 (2)从第一个ID开始,与后续的发帖ID进行比较,若相同计数器则加一,否则减一.若计数器的数值被减为零,则重新选取当前ID开始记录比较. (3)输出结果 二.源 ...

  6. 单元测试篇----cppUnit的安装与使用

    在刚学习单元测试章节的时候,尝试着使用dev—c++来编译cppunit,但一直没成功,也尝试问过同学,一直没有很好的方法,因此浪费了不少时间.今天又耐心的尝式一下,意外成功了.以下是详细的安装步骤: ...

  7. 从一个Activity返回上一个Activity

    从一个Activity返回上一个Activity 要求:保留上一个Activity的数据 方法: 第一步:从Activity1转向Activity2时,用startActivityForResult而 ...

  8. Jquery方法的应用

    <body> <div id="one"><span>one</span></div><div class=&qu ...

  9. C#做音乐播放器时在自动下一曲中报异常的解决办法

    ---------------------- ASP.Net+Unity开发..Net培训.期待与您交流! ---------------------- 在利用Media Player做音乐播放器的时 ...

  10. boost之function

    boost中function是对函数指针和函数对象的进行封装的模板类. 定义示例:function<int()> func生成一个空的对象,表示函数参数个数为零,返回类型为int. #in ...