Pagini recente » Cod sursa (job #2631129) | Cod sursa (job #3172524) | Cod sursa (job #2981957) | Cod sursa (job #613741) | Cod sursa (job #374127)
Cod sursa(job #374127)
#include<cstdio>
#define maxn 100005
int i , j , k , n , m , a , b , type;
int dad[maxn] , rang[maxn];
void unite ( int x , int y )
{
if ( rang[x] > rang[y] )
dad[y] = x;
else
dad[x] = y;
if ( rang[x] == rang[y] ) rang[y] ++;
}
int find ( int x )
{
int root , y;
for( root = x ; root != dad[root] ; root = dad[root] );
for ( ; dad[x] != x ;)
{
y = dad[x];
dad[x] = root;
x = y;
}
return root;
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d %d",&n,&m);
for( i = 1 ; i <= n ; ++i )
{
dad[i] = i;
rang[i] = 1;
}
for ( i = 1 ; i <= m ; ++i )
{
scanf("%d %d %d",&type,&a,&b);
if ( type == 1 )
unite ( find ( a ) , find ( b ) ) ;
else if ( type == 2 )
{
if ( find ( a ) == find ( b ) ) printf("DA\n");
else printf("NU\n");
}
}
return 0;
}