Pagini recente » Cod sursa (job #2535444) | Cod sursa (job #2968096) | Cod sursa (job #330945) | Cod sursa (job #189617) | Cod sursa (job #2920240)
// https://www.varena.ro/problema/disjoint
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define mod 1000000007
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int uf[100000], r[100000];
int uf_find(int x) {
if (uf[x] == x) return x;
return uf[x] = uf_find(uf[x]);
}
void uf_union(int a, int b) {
a=uf_find(a);
b=uf_find(b);
if (a != b) {
if (r[a] < r[b]) swap(a, b);
uf[b] = a;
r[a] += r[b];
}
}
int main() {
int n, m;
fin>>n>>m;
for (int i=0; i<n; ++i) uf[i] = i;
for (int i=0; i<m; ++i) {
int c, a, b;
fin>>c>>a>>b;
--a; --b;
if (c==1) uf_union(a, b);
else {
if (uf_find(a) == uf_find(b)) fout<<"DA"<<endl;
else fout<<"NU"<<endl;
}
}
}