Pagini recente » Cod sursa (job #1818257) | Cod sursa (job #3132779) | Cod sursa (job #1934675) | Cod sursa (job #2901544) | Cod sursa (job #2205914)
#include <fstream>
using namespace std;
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
const int NMAX = 100005;
int dad[NMAX], maxlen[NMAX];
int findad(int x) {
if(dad[x] == x)
return x;
dad[x] = findad(dad[x]);
return dad[x];
}
void unionfind(int x,int y) {
if(maxlen[x] > maxlen[y])
dad[y] = x;
else if(maxlen[x] < maxlen[y])
dad[x] = y;
else {
dad[x] = y;
maxlen[y] ++;
}
}
int main() {
int n,m;
cin >> n >> m;
for(int i = 1;i <= n;i ++)
dad[i] = i;
for(int i = 1;i <= m;i ++) {
int op, x, y;
cin >> op >> x >> y;
if(op == 1)
unionfind(findad(x), findad(y));
if(op == 2 && findad(x) == findad(y))
cout << "DA\n";
else if(op == 2)
cout << "NU\n";
}
return 0;
}