Pagini recente » Cod sursa (job #2084772) | Cod sursa (job #1294597) | Cod sursa (job #2806498) | Cod sursa (job #1282994) | Cod sursa (job #2002186)
#include <bits/stdc++.h>
#define NMAX 100001
using namespace std;
int a[ NMAX ], v[ NMAX ];
int n, m;
int f( int x ){
int y, i;
for (i = x; a[ i ] != i ; i = a[ i ]);
for (; a[ x ] != x; ){
y = a[ i ];
a[ x ] = i;
x = y;
}
return i;
}
void u(int x, int y){
if (v[ x ] > v[ y ])
a[ y ] = x;
else
a[ x ] = y;
if (v[ x ] == v[ y ])
++v[ y ];
}
int main()
{
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
cin >> n >> m;
int x, y, cod;
for (int i = 1; i <= n; i++)
a[ i ] = i, v[ i ] = 1;
for (int i = 1; i <= m; i++){
cin >> cod >> x >> y;
if (cod == 2)
if (f( x ) == f( y ))
cout << "DA" << '\n';
else
cout << "NU" << '\n';
else{
if (f( x ) == f( y )){
fprintf(stderr,"%d ", i);
return 0;
}
u(f( x ), f( y ));
}
}
}