Pagini recente » Cod sursa (job #3167105) | Cod sursa (job #227086) | Cod sursa (job #811088) | Cod sursa (job #3236484) | Cod sursa (job #526585)
Cod sursa(job #526585)
#include<stdio.h>
#define N 100001
long n,m,y,z,i,p[N],r[N];
int x;
void init(long p[N],long r[N],long n)
{long i;
for(i=1;i<=n;i++)
{p[i]=i;
r[i]=0;}}
long find(long p[N],long i)
{if(p[i]==i)
return i;
p[i]=find(p,p[i]);
return p[i];}
void unif(long p[N],long r[N],long i,long j)
{long ci,cj;
ci=find(p,i);
cj=find(p,j);
if(r[ci]>r[cj])
p[cj]=ci;
else
if(ci!=cj)
{p[ci]=cj;
if(r[ci]==r[cj])
r[cj]++;}}
int main()
{freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%ld%ld\n",&n,&m);
init(p,r,n);
for(i=0;i<m;i++)
{scanf("%d%ld%ld\n",&x,&y,&z);
if(x==1)
unif(p,r,y,z);
else
if(find(p,y)==find(p,z))
printf("DA\n");
else
printf("NU\n");}
fclose(stdin);
fclose(stdout);
return 0;}