Pagini recente » Cod sursa (job #1599336) | Cod sursa (job #347821) | Cod sursa (job #1944960) | Cod sursa (job #3232646) | Cod sursa (job #3243361)
#include <bits/stdc++.h>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int q,n,parent[100002],sz[100002],i,c,a,b;
void make_set(int node){
parent[i]=i;
sz[i]=1;
}
int find_set(int node){
if (parent[node]==node) return node;
parent[node]=find_set(parent[node]);
return parent[node];
}
void union_set(int node1,int node2){
int a=find_set(node1);
int b=find_set(node2);
if (a!=b){
if (sz[a]<sz[b])swap(a,b);
parent[b]=a;
sz[a]+=sz[b];
}
}
int main()
{
f>>n>>q;
for (i=1;i<=n;i++)make_set(i);
for (i=1;i<=q;i++){
f>>c>>a>>b;
if (c==1){
union_set(a,b);
}
else {
if (find_set(a)==find_set(b))g<<"DA\n";
else g<<"NU\n";
}
}
return 0;
}