Pagini recente » Cod sursa (job #2637000) | Cod sursa (job #511507) | Cod sursa (job #2179173) | Cod sursa (job #3002096) | Cod sursa (job #3264349)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
vector<int>pr,nr;
int gaseste(int nod){
if(pr[nod] == nod)
return nod;
return pr[nod] = gaseste(pr[nod]);
}
void uunion(int a,int b){
a = gaseste(a);
b = gaseste(b);
if(a==b)
return;
if(nr[a] < nr[b])
swap(a,b);
nr[a] += nr[b];
pr[b] = a;
}
int main()
{
int n,m;
fin>>n>>m;
pr.resize(n+1);
nr.resize(n+1);
for(int i=1;i<=n;i++){
pr[i]=i;
nr[i]=1;
}
for(int i=1;i<=m;i++){
int q,a,b;
fin>>q>>a>>b;
if(q == 1){
uunion(a,b);
}
else{
if(gaseste(a) == gaseste(b))
fout<<"DA"<<'\n';
else fout<<"NU"<<'\n';
}
}
return 0;
}