Pagini recente » Cod sursa (job #898994) | Cod sursa (job #1418477) | Cod sursa (job #583068) | Cod sursa (job #242973) | Cod sursa (job #235499)
Cod sursa(job #235499)
#include<stdio.h>
#define NMAX 100002
int A1[NMAX],A2[NMAX];
void destroy(const int a,const int b)
{
if( A2[a]>A2[b] )
A1[a]=b;
else
A1[b]=a;
if( A2[a]==A2[b] ){
++A2[a];
return;
}
}
int seek(int v1)
{
int v2,v3;
for( v2=v1; A1[v2]!=v2; v2=A1[v2]);
for(; A1[v1]!=v1; )
{
v2=A1[v1];
A1[v1]=v2;
v1=v2;
}
return v2;
}
int main(){
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
int N,Q;
scanf("%d%d\n",&N,&Q);
int i;
for(i=1; i<=N; ++i)
{
A1[i]=i;
A2[i]=1;
}
int a1,a2,a3;
while( Q-- )
{
scanf("%d%d%d\n",&a1,&a2,&a3);
if( a1==1 )
destroy(seek(a2),seek(a3));
else
{
if( seek(a2) == seek(a3) )
printf("DA\n");
else
printf("NU\n");
}
}
return 0;
}