图论训练之八

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

题目描述

给一个连通图,问最少加几条边可以得到边双连通图。

分析:

模板题,复习一下

tarjan双向边缩点,再找叶子结点(即出度为1的点)

其实本题可以不用缩点,只用维护low数组就行,

只要low数组的值相等,就是属于同一连通块

为什么要找叶子结点呢?

结论:一个无向图通过加边得到边双联通图至少要(叶子结点数目+1)/2

#include
#include
#include
#include
using namespace std;
const int MAXN = 5010;
vectoredge[MAXN];
int n, m;
int low[MAXN], dfn[MAXN], tmpdfn, in[MAXN];
int min( int a, int b ){return a> 1 );
    return 0;
}

你可能感兴趣的:(图论训练之八)