#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define popcount __builtin_popcount #define popcountll __builtin_popcountll using namespace std; typedef long long int ll; typedef pair P; struct TwoEdgeConnectedComponent{ int n, k; vector> g, t; vector used; vector comp, ord, low; using edge=pair; vector br; void dfs(int x, int prev, int &c){ used[x]=1; ord[x]=c++; low[x]=n; bool mul=0; for(auto y:g[x]){ if(used[y]){ if(y!=prev || mul) low[x]=min(low[x], ord[y]); else mul=1; continue; } dfs(y, x, c); low[x]=min(low[x], low[y]); } } void dfs2(int x, int num){ comp[x]=num; for(auto y:g[x]){ if(comp[y]!=-1) continue; if(ord[x]> &g):g(g), n(g.size()), used(n), comp(n, -1), ord(n), low(n), k(0){ int c=0; for(int i=0; i>n; vector> g(n); int a[200020], b[200020]; for(int i=0; i>a[i]>>b[i]; a[i]--; b[i]--; g[a[i]].push_back(b[i]); g[b[i]].push_back(a[i]); } TwoEdgeConnectedComponent myon(g); set

st; for(auto p:myon.br){ st.insert(p); st.insert({p.second, p.first}); } vector ans; for(int i=0; i