Pagini recente » Cod sursa (job #2397272) | Cod sursa (job #658452) | Cod sursa (job #2466822) | Cod sursa (job #643378) | Cod sursa (job #1111750)
#include<cstdio>
#define N_MAX 100010
using namespace std;
int T[N_MAX],rang[N_MAX],N,M;
inline void Reuneste(int x,int y)
{
if (rang[x]<rang[y]) T[x]=T[y];
else T[y]=T[x];
if (rang[x]==rang[y]) rang[x]++;
}
inline int tata(int x)
{
if (x!=T[x]) return tata(T[x]);
return T[x];
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d%d",&N,&M);
for (int i=1;i<=N;++i) {T[i]=i; rang[i]=0;}
for (int i=1;i<=M;++i)
{
int k,x,y,Tx,Ty;
scanf("%d%d%d",&k,&x,&y);
Tx=tata(x); Ty=tata(y);
if (k==1) Reuneste(Tx,Ty);
else {
if (Tx!=Ty) printf("NU\n");
else printf("DA\n");
}
}
fclose(stdin); fclose(stdout);
return 0;
}