Pagini recente » Cod sursa (job #2350117) | Cod sursa (job #2073918) | Cod sursa (job #3194972) | Cod sursa (job #1968219) | Cod sursa (job #3191826)
#include <bits/stdc++.h>
#define DIM 1000001
#define int long long
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n, m, task, x, y, i;
int tata[DIM];
int get_root(int nod){
while(tata[nod]>0)
nod=tata[nod];
return nod;
}
void join(int nod1, int nod2){
int root1=get_root(nod1);
int root2=get_root(nod2);
if(tata[root1]<=tata[root2]){
tata[root1]+=tata[root2];
tata[root2]=root1;
}else{
tata[root2]+=tata[root1];
tata[root1]=root2;
}
}
void query(int nod1, int nod2){
int root1=get_root(nod1);
int root2=get_root(nod2);
if(root1==root2)
fout<<"DA\n";
else fout<<"NU\n";
}
int32_t main(){
fin>>n>>m;
for(i=1; i<=n; i++)
tata[i]=-1;
for(i=1; i<=m; i++){
fin>>task>>x>>y;
if(task==1)
join(x, y);
if(task==2)
query(x, y);
}
}