无向图的双连通块
题目描述
给出一个无向图,求其中双连通块的个数以及其中最大的双连通块。
输入
第1行:2个整数n和m,n表示图的结点个数,m表示图中边的数量 (1<=n<=100000, 1<=m<=1000000)
接下来m行,每行2个整数,表示一条边
输出
第1行:1个整数,表示整个图中双连通块的数量
第2行:1个整数,表示整个图中最大的双连通块的边的条数
接下来依次输出最大的双连通块的各条边,按字典序输出,即按边的端点编号从小到大输出,每条边先输出编号小的端点,再输出编号大的端点
若有多个边数相同的最大双连通块,输出字典序最小的一个
样例输入
9 10
1 2
4 1
2 3
4 2
1 5
5 6
6 7
6 8
7 9
8 7
样例输出
6
3
1 2
1 4
2 4
把割点切开就好了..
#include<cstdio>
#include<stack>
#include<iostream>
#include<vector>
#include<algorithm>
#include<cstring>
using namespace std;
#define MAXN 100000
#define MAXM 1000000
struct node{