Pagini recente » Cod sursa (job #3231863) | Cod sursa (job #962125) | Cod sursa (job #699336) | Cod sursa (job #1810162) | Cod sursa (job #2205903)
#include <fstream>
using namespace std;
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
const int NMAX = 100005;
int dad[NMAX], maxlen[NMAX];
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 findad(int x) {
if(dad[x] == 0)
return x;
dad[x] = findad(dad[x]);
return dad[x];
}
int main() {
int n,m;
cin >> n >> m;
for(int i = 1;i <= m;i ++) {
int op, x, y;
cin >> op >> x >> y;
if(op == 1)
unionfind(x, y);
else if(findad(x) == findad(y))
cout << "DA\n";
else
cout << "NU\n";
}
return 0;
}