S; int dfs(int u,int fa) { //printf("hehe\n"); int lowu=pre[u]=++dfs_clock; int child=0; for(int i=0;i
=pre[u]) { iscut[u]=1; bcc_cnt++; bcc[bcc_cnt].clear(); while(1) { Edge x=S.top(); S.pop(); if(bccno[x.u]!=bcc_cnt) { bcc[bcc_cnt].push_back(x.u); bccno[x.u]=bcc_cnt; } if(bccno[x.v]!=bcc_cnt) { bcc[bcc_cnt].push_back(x.v); bccno[x.v]=bcc_cnt; } if(x.u==u&&x.v==v)break; } } } else if(pre[v]
?
|