#include #include #include #include #include #include #include #include using namespace std; int n,m,tata[100005],stiva[100005],stlev,t1,t3,xx[100005],yy[100005],x3[100005],y3[100005]; bool sol[100005], viz[100005]; vector intrebari[100005]; int i,j; int radacina(int x) { int r=x, aux; while (tata[r]!=r) r=tata[r]; while (tata[x]!=x) { aux=tata[x]; tata[x]=r; x=aux; } return r; } int main(void) { // ifstream cin("file.in"); cin>>n>>m; for (i=1; i<=n; ++i) tata[i]=i; for (i=1; i<=m; ++i) { int op,x,y; cin>>op; if (op==1) { cin>>x>>y; ++t1; stiva[++stlev]=t1; xx[t1]=x; yy[t1]=y; } else if (op==2) { cin>>x; stlev-=x; } else { ++t3; cin>>x>>y; x3[t3]=x; y3[t3]=y; intrebari[stiva[stlev]].push_back(t3); } } //acum imi construiesc solutia for (i=0; i<=t1; ++i){ int r1=radacina(xx[i]); int r2=radacina(yy[i]); viz[xx[i]]=1; viz[yy[i]]=1; if (r1!=r2) tata[r1]=r2; //raspund la intrebari for (j=0; j