int n,a[2d5]; vector v[1d5]; int g[1d5]; int h[1d5]; int m; int f1(int b,int p){ int r=0; for(int c:v[b]){ if(c!=p&&!f1(c,b)){ r+=1; } } return g[b]=r; } void f2(int b,int p,int d){ for(int c:v[b]){ if(c!=p){ f2(c,b,!(g[b]-!g[c]||d)); } } m+=h[b]=!(g[b]||d); } { rd(n,a(n*2-2)); rep(i,n*2-2){ v[a[i]-1].push_back(a[i^1]-1); } f1(0,-1); f2(0,-1,0); wt(m); rep(i,n){ if(h[i]) wt(i+1); } }