Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <iostream>#include <cmath>#include <stdio.h>#include <stdlib.h>#include <map>#include <utility>#include <vector>#include <algorithm>#include <assert.h>#include <algorithm>#include <queue>#include <stack>#include <string.h>#include <string>using namespace std;const int N = 20000;const int M = 100000;int head[N + 1];typedef struct eedge{int u, v, next;}Edge;Edge edge[2 * M];int m, n, e;bool visit[N + 1];int low[N + 1], dfn[N + 1],parent[N+1];bool mark[N+1];int nodeNum;void addedge(int u, int v){edge[e].u = u;edge[e].v = v;