Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <iostream>#include <cstring>#include <algorithm>using namespace std;#define rep(i,n) for(int i = 0; i < n; i++)#define N 20000#define M 200000int hd[N],nt[M],to[M],num=0;void conn(int u,int v) {nt[num] = hd[u];to[num] = v;hd[u] = num++;}int dfn[N],low[N];int id[M>>1],idn=0,stk[M>>1],stn=0;void group(int top) {int r=M;for(int i = top; i < stn; i++) r = min(r,stk[i]);for(int i = top; i < stn; i++) id[stk[i]] = r;stn = top;idn++;}void tarjan(int u,int parent=-1) {static int count = 0;