Pagini recente » Cod sursa (job #591995) | Cod sursa (job #775562) | Cod sursa (job #2916483) | Cod sursa (job #2580218) | Cod sursa (job #2172020)
#include <fstream>
using namespace std;
ifstream fin ( "disjoint.in" );
ofstream fout ("disjoint.out" );
const int Dim = 100001;
int n,m,T[Dim],H[Dim];
int Find(int x);
void Union(int r1, int r2);
int main() {
fin >> n >> m;
for ( int i = 1; i <= n; ++i)
T[i] = i;
int type,x,y;
for ( int i = 1; i <= m; ++i) {
fin >> type >> x >> y;
if ( type == 1) Union(Find(x),Find(y));
else {
if(Find(x) == Find(y)) fout << "DA\n";
else fout << "NU\n";
}
}
}
int Find(int x) {
if (T[x] == x) return x;
return T[x] = Find(T[x]);
}
void Union(int r1, int r2) {
if (H[r1] > H[r2])
T[r2] = r1;
else {
T[r1] = r2;
if (H[r1] == H[r2] )
++H[r2];
}
}