Pagini recente » Cod sursa (job #2034363) | Cod sursa (job #1662889) | Cod sursa (job #1757156) | Cod sursa (job #3030306) | Cod sursa (job #366372)
Cod sursa(job #366372)
#include <cstdio>
#define file_in "disjoint.in"
#define file_out "disjoint.out"
#define Nmax 101001
int n,m,tata[Nmax],x,y,tip,niv[Nmax];
void unite(int t1, int t2)
{
if (niv[t1]>niv[t2])
niv[t1]+=niv[t2],
tata[t2]=t1;
else
niv[t2]+=niv[t1],
tata[t1]=t2;
}
inline int father(int t)
{
if (t!=tata[t])
tata[t]=father(tata[t]);
return tata[t];
}
int main()
{
int i;
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
scanf("%d %d", &n, &m);
for (i=1;i<=n;++i) tata[i]=i,niv[i]=1;
while(m--)
{
scanf("%d %d %d", &tip,&x, &y);
if (tip==1)
{
unite(father(x),father(y));
}
else
{
if (father(x)==father(y))
printf("DA\n");
else
printf("NU\n");
}
}
fclose(stdin);
fclose(stdout);
return 0;
}