Pagini recente » Cod sursa (job #2727554) | Cod sursa (job #1593773) | Cod sursa (job #3282551) | Cod sursa (job #506865) | Cod sursa (job #2892921)
#include <bits/stdc++.h>
using namespace std;
const int nmax = 1e5;
int comp[nmax+5], dim[nmax+5];
int Find(int node) {
if(comp[node] == node) return node;
comp[node] = Find(comp[node]);
return comp[node];
}
void Union(int a, int b) {
int ra = Find(a), rb = Find(b);
if(ra == rb) return;
if(dim[ra] > dim[rb]) swap(ra, rb);
dim[rb] += dim[ra];
comp[ra] = comp[rb];
}
int main () {
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int n, m; cin >> n >> m;
for(int i=1; i<=n; i++) comp[i] = i, dim[i] = 1;
for(int i=1; i<=m; i++) {
int type, a, b; cin >> type >> a >> b;
if(type==1) Union(a, b);
else cout << (Find(a) == Find(b) ? "DA\n" : "NU\n");
}
return 0;
}