Pagini recente » Cod sursa (job #2787681) | Cod sursa (job #2676033) | Cod sursa (job #513607) | Cod sursa (job #2043342) | Cod sursa (job #526574)
Cod sursa(job #526574)
#include<stdio.h>
#define N 100001
typedef struct
{long p[N],k;}ds;
long n,m,y,z,i;
int x;
ds c;
void init(ds &c,long n)
{long i;
c.k=n;
for(i=1;i<=n;i++)
c.p[i]=-1;}
long find(ds c,long x)
{if(c.p[x]<0)
return x;
return c.p[x]=find(c,c.p[x]);}
void unif(ds &c,long x,long y)
{long cx,cy;
cx=find(c,x);
cy=find(c,y);
if(cx==cy)
return;
if(c.p[cx]<=c.p[cy])
{c.p[cx]+=c.p[cy];
c.p[cy]=cx;}
else
{c.p[cy]+=c.p[cx];
c.p[cx]=cy;}}
int main()
{freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%ld%ld\n",&n,&m);
init(c,n);
for(i=0;i<m;i++)
{scanf("%d%ld%ld\n",&x,&y,&z);
if(x==1)
unif(c,y,z);
else
if(find(c,y)==find(c,z))
printf("DA\n");
else
printf("NU\n");}
fclose(stdin);
fclose(stdout);
return 0;}