#include #include #include #include #include #include #include using namespace std; vector adj[500500]; vector ind[500500]; vector adj2[500500]; int n,m; int a,b,cc; int t; int ra[500500],r=1; int lw[500500]; int mn_comp[500500]; int comp[500500],c=1; bool bri[500500]; bool vis[500500]; set > edges; int deg[500500]; bool vis2[500500]; void reset(){ r=1; c=1; edges.clear(); for(int i=1;i<=n;i++){ adj[i].clear(); ind[i].clear(); adj2[i].clear(); mn_comp[i]=100000000; vis2[i]=false; ra[i]=0; lw[i]=0; deg[i]=0; comp[i]=0; vis[i]=false; } for(int i=0;i<=m;i++){ bri[i]=false; } } void dfs(int nd,int p){ ra[nd]=r; lw[nd]=r; r++; int cnt=0; for(int i=0;ira[nd]){ bri[in]=true; } lw[nd]=min(lw[nd],lw[ch]); } } } void dfs2(int nd){ comp[nd]=c; mn_comp[c]=min(mn_comp[c],nd); vis[nd]=true; for(int i=0;i2){ ok=false; break; } } if(ok){ //cout<<"YES"<