Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include<cstdio>#include<cstring>#include<algorithm>#include<vector>#include<map>#include<queue>#include<set>using namespace std;const int N = 20000 + 10;int pre[N], low[N], dfs_clock;int cnt_bridge, cnt_cut;vector<int> G[N];bool iscut[N];struct Bri {int u, v;Bri() { }Bri(int a, int b):u(a), v(b) { }const bool operator < (const Bri& rhs) const {if(u == rhs.u) return v < rhs.v;return u < rhs.u;}};vector<Bri> bridge;void dfs(int u, int fa) {pre[u] = low[u] = ++dfs_clock;int child = 0;for(int i = 0; i < G[u].size(); i++) {int v = G[u][i];if(v == fa) continue;if(!pre[v]) {child++;