Pagini recente » Cod sursa (job #1314559) | Cod sursa (job #1478842) | Cod sursa (job #66788) | Cod sursa (job #814898) | Cod sursa (job #2182542)
#include <fstream>
using namespace std;
ifstream fin ("disjoint.in");
ofstream fout ("disjoint.out");
const int Dim = 100001;
int T[Dim],H[Dim],m,n;
void Union(int r1, int r2);
int Find(int x);
int main() {
fin >> n >> m;
int task,x,y;
for ( int i = 1; i <= n; ++i)
T[i] = i;
for ( int i = 1; i <= m; ++i) {
fin >> task >> x >> y;
if ( task == 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[r1] = r2;
else {
T[r2] = r1;
if (H[r1] == H[r2] )
++H[r1];
}
}