Pagini recente » Cod sursa (job #1183073) | Cod sursa (job #1075136) | Cod sursa (job #2795830) | Cod sursa (job #2050018) | Cod sursa (job #1789535)
#include <cstdio>
#define NMAX 100000
using namespace std;
int sef[NMAX+1];
int card;
int find ( int nr ) {
card = 0;
int aux = nr, ras;
while ( sef[aux] != aux )
aux = sef[aux];
ras = aux;
while ( sef[nr] != nr ) {
aux = sef[nr];
sef[nr] = ras;
nr = aux;
++card;
}
return ras;
}
int uneste ( int x, int y ) {
int sefx, sefy, cardx, cardy;
sefx = find ( x );
cardx = card;
sefy = find ( y );
cardy = card;
if ( cardx < cardy )
sef[sefx] = sefy;
else
sef[sefy] = sefx;
}
int main() {
freopen ( "disjoint.in", "r", stdin );
freopen ( "disjoint.out", "w", stdout );
int n, m, x, y, cod, i;
scanf ( "%d%d",&n, &m );
for ( i = 1 ; i <= n ; i ++ )
sef[i] = i;
for ( i = 1 ; i <= m ; i ++ ) {
scanf ( "%d%d%d",&cod, &x, &y );
if ( cod == 1 )
uneste ( x, y );
else {
if ( find ( x ) == find ( y ) )
printf ( "DA\n" );
else
printf ( "NU\n" );
}
}
return 0;
}