Pagini recente » Cod sursa (job #2887547) | Cod sursa (job #3169213) | Cod sursa (job #2625952) | Cod sursa (job #2136213) | Cod sursa (job #2794256)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
const int nmax=100000;
vector <int> r[nmax+1];
int v[nmax+1];
int main(){
int n,m;
fin>>n>>m;
for(int i=1;i<=n;i++){
r[i].push_back(i);
v[i]=i;
}
for(int im=1;im<=m;im++){
int x,a,b;
fin>>x>>a>>b;
if(x==1){
int s1=r[v[a]].size(),s2=r[v[b]].size();
int va=v[a],vb=v[b];
if(s1<=s2){
for(int i=0;i<s1;i++){
r[vb].push_back(r[va][i]);
v[r[va][i]]=vb;
}
}else{
for(int i=0;i<s2;i++){
r[va].push_back(r[vb][i]);
v[r[vb][i]]=va;
}
}
}else{
if(v[a]==v[b]){
fout<<"DA\n";
}else{
fout<<"NU\n";
}
}
}
return 0;
}