Pagini recente » Cod sursa (job #690023) | Cod sursa (job #1328095) | Cod sursa (job #348402) | Cod sursa (job #2765927) | Cod sursa (job #3259143)
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
const int nmax=100001;
int n,m,op,par[nmax],status[nmax],x,y;
int ad(int nod){
if(par[nod]==nod)return nod;
else{
return par[nod]=ad(par[nod]);
}
}
void reun(int nod1,int nod2){
nod1=ad(nod1);
nod2=ad(nod2);
if(nod1==nod2)return;
if(status[nod1]<status[nod2])swap(nod1,nod2);
if(status[nod1]==status[nod2])status[nod1]++;
par[nod2]=nod1;
}
int main()
{
fin>>n>>m;
for(int i=1; i<=n; i++)
{
par[i]=i;
status[i]=1;
}
for(int i=1;i<=m;i++){
fin>>op>>x>>y;
if(op==1){
reun(x,y);
}
else{
if(ad(x)==ad(y))
fout<<"DA"<<'\n';
else fout<<"NU"<<'\n';
}
}
}