题意为求出所给图的割点
割点:一个顶点u是割点,当且仅当满足(1)或(2) :(1) u为树根,且u有多于一个子树。(2) u不为树根,且满足存在(u,v)为树枝边(或称父子边,即u为v在搜索树中的父亲),使得dfn(u)<=Low(v)
#include <set>
#include <cmath>
#include <stack>
#include <vector>
#include <string>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 1e4 + 5;
const int maxm = 1e5 + 5;
struct Edge {
int to, nxt;
bool cut; //是否为桥的标记
Edge() {}
Edge(int _to, int _nxt, bool _cut) : to(_to), nxt(_nxt), cut(_cut) {}
} edge[maxm];
int head[maxn], tot;
int low[maxn], dfn[maxn], Stack[maxn];
int Index, top;
bool Instack[maxn];
bool cut[maxn];
int add_block[maxn];
int bridge;
void addedge(int u, int v) {
edge[tot] = Edge(v, head[u], false);
head[u] = tot++;
}
void Tarjan(int u, int pre) {
int v;
low[