Pagini recente » Cod sursa (job #424546) | Cod sursa (job #2837746) | Cod sursa (job #129638) | Cod sursa (job #2485750) | Cod sursa (job #366370)
Cod sursa(job #366370)
#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 (tata[t1]<tata[t2])
niv[t1]+=t2,
tata[t1]=t2;
else
niv[t2]+=t1,
tata[t2]=t1;
}
inline int father(int t)
{
if (t!=tata[t])
t=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(x,y);
}
else
{
if (father(x)==father(y))
printf("DA\n");
else
printf("NU\n");
}
}
fclose(stdin);
fclose(stdout);
return 0;
}