Pagini recente » Cod sursa (job #3234670) | Cod sursa (job #1426585) | Cod sursa (job #143291) | Cod sursa (job #2973483) | Cod sursa (job #526161)
Cod sursa(job #526161)
#include<cstdio>
using namespace std;
int n,m,act,a,b,i,T[100005],R[100005],cauta(int x);
void read(),solve(),uneste(int x, int y);
int main()
{
read();
solve();
return 0;
}
void read()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
{
T[i]=i;
R[i]=1;
}
}
void solve()
{
for(;m;m--)
{
scanf("%d%d%d",&act,&a,&b);
if(act==1) uneste(a,b);
else cauta(a)==cauta(b)?printf("DA\n"):printf("NU\n");
}
}
void uneste(int x,int y)
{
cauta(x);
cauta(y);
if(R[a]>R[b]){T[b]=a;R[a]+=R[b];}
else {T[a]=b;R[b]+=R[a];}
}
int cauta(int x)
{
int aux,t;
for(t=x;t!=T[t];t=T[t]);
for(;x!=T[x];)
{
aux=T[x];T[x]=t;x=aux;
}
return t;
}