Pagini recente » Cod sursa (job #2767857) | Cod sursa (job #787842) | Cod sursa (job #2419553) | Cod sursa (job #3266956) | Cod sursa (job #2497211)
#include <fstream>
using namespace std;
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
int n, m, p[100001], len[100001];
int up(int i) {
int tmp = i;
while(p[tmp] != tmp)
tmp = p[tmp];
while(p[i] != i) {
int tmp1 = i;
i = p[i];
p[tmp1] = tmp;
}
return tmp;
}
void link(int a, int b) {
a = up(a);
b = up(b);
if(len[a] > len[b])
p[b] = a;
else
p[a] = b;
}
int main() {
cin>>n>>m;
for(int x = 1; x<=100000; x++) {
p[x] = x;
len[x] = 1;
}
while(m--) {
int a, b, c;
cin>>a>>b>>c;
if(a == 1) {
link(b, c);
} else if(up(b) == up(c))
cout<<"DA\n";
else
cout<<"NU\n";
}
return 0;
}