Pagini recente » Cod sursa (job #2304037) | Cod sursa (job #1243258) | Cod sursa (job #1776296) | Cod sursa (job #2764340) | Cod sursa (job #3209175)
#include<bits/stdc++.h>
std::ifstream fin("disjoint.in");
std::ofstream fout("disjoint.out");
const int MAX = 1e5 + 5;
int Parent[MAX], Size[MAX];
int n, q, t, x, y;
void make_set(int v){
Parent[v] = v;
Size[v] = 1;
}
int GetParent(int v){
if(Parent[v] == v)
return v;
return Parent[v] = GetParent(Parent[v]);
}
void make_union(int u, int v){
u = GetParent(u);
v = GetParent(v);
if(u != v){
if(Size[u] > Size[v])
std::swap(u, v);
Parent[u] = v;
Size[v] += Size[u];
}
}
int main(){
fin >> n >> q;
for(int i = 1; i <= n; ++i)
make_set(i);
while(q--){
fin >> t >> x >> y;
if(t == 1)
make_union(x, y);
else
if(GetParent(x) == GetParent(y))
fout << "DA\n";
else
fout << "NU\n";
}
}