Pagini recente » Cod sursa (job #3125253) | Cod sursa (job #375573) | Cod sursa (job #1887280) | Cod sursa (job #2404961) | Cod sursa (job #229427)
Cod sursa(job #229427)
#include <cstdio>
using namespace std;
#define MAX 100100
int T[MAX], R[MAX];
int N, M;
int r(int a) {
if ( T[a]==a ) return a;
return r(T[a]);
}
void u(int a, int b) {
int ra = r(a), rb = r(b);
if ( R[ra] == R[rb] ) {
R[ra] ++;
T[rb] = ra;
} else {
if ( R[ra] < R[rb] )
T[ra] = rb;
else
T[rb] = ra;
}
}
int main() {
freopen( "disjoint.in", "r", stdin );
freopen( "disjoint.out", "w", stdout );
scanf( "%d %d", &N, &M );
for ( int i=1; i<=N; ++i ) T[i] = i, R[i] = 0;
while ( M-- ) {
int c,x,y;
scanf( "%d %d %d", &c, &x, &y);
switch ( c ) {
case 1:
u(x,y);
break;
case 2:
printf( "%s\n", (r(x)==r(y)) ? "DA" : "NU" );
break;
}
}
return 0;
}