Pagini recente » Cod sursa (job #1834910) | Cod sursa (job #3165578) | Cod sursa (job #1495901) | Cod sursa (job #147177) | Cod sursa (job #1757369)
#include <cstdio>
using namespace std;
#define NMAX 100005
int v[ NMAX ],
a[ NMAX ];
int n;
int radacina( int x );
bool query( int x, int y );
void reuniune( int x, int y );
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
int m, i, j, x, y, c, k;
scanf("%d%d",&n,&m);
for( i = 1; i <= n; ++i ) v[ i ] = i;
while( m-- ){
scanf("%d%d%d",&c,&x,&y);
if( c == 1 ) reuniune( x, y );
else
if( query( x, y ) ) printf("DA\n");
else printf("NU\n");
}
return 0;
}
int radacina( int x ){
while( v[ x ] != v[ v[ x ] ] )
v[ x ] = v[ v[ x ] ];
return v[ x ];
}
void reuniune( int x, int y ){
v[ radacina( x ) ] = radacina( y );
}
bool query( int x, int y ){
return ( radacina( x ) == radacina( y ) );
}