Pagini recente » Cod sursa (job #3300759) | Cod sursa (job #369624) | Cod sursa (job #3300814) | Cod sursa (job #305543) | Cod sursa (job #3343170)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n,t[100005],op,x,y,m,h[100005],r1,r2,aux,i;
int cautare(int x)
{ while(t[x]!=x) x=t[x];
return x;
}
int main()
{
fin>>n>>m;
for(i=1;i<=n;i++) t[i]=i;
for(i=1;i<=m;i++)
{
fin>>op;
if(op==2)
{
fin>>x>>y;
if(cautare(x)==cautare(y)) fout<<"DA"<<'\n';
else fout<<"NU"<<'\n';
}
else
{
fin>>x>>y;
r1=cautare(x);
r2=cautare(y);
if(h[r1]<h[r2]) t[r1]=r2;
else t[r2]=r1;
if(h[r1]==h[r2]) h[r1]++;
while(x!=r1)
{aux=t[x];
t[x]=r1;
x=aux;
}
while(y!=r2)
{aux=t[y];
t[y]=r2;
y=aux;
}
}
}
return 0;
}