Pagini recente » Cod sursa (job #867799) | Cod sursa (job #1775853) | Cod sursa (job #2564092) | Cod sursa (job #993146) | Cod sursa (job #1757360)
#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 ){
int rx, ry;
rx = radacina( x );
ry = radacina( y );
v[ rx ] = ry;
}
bool query( int x, int y ){
int rx, ry, aux;
rx = radacina( x );
ry = radacina( y );
return rx == ry;
}