Pagini recente » Cod sursa (job #2494609) | Cod sursa (job #94039) | Cod sursa (job #1476097) | Cod sursa (job #568835) | Cod sursa (job #2892923)
#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; f >> 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; f >> type >> a >> b;
if(type==1) Union(a, b);
else g << (Find(a) == Find(b) ? "DA\n" : "NU\n");
}
return 0;
}