Pagini recente » Cod sursa (job #3251032) | Cod sursa (job #2252056) | Cod sursa (job #1608673) | Cod sursa (job #1056396) | Cod sursa (job #2515512)
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
vector <int> v[100005];
int poz[100005];
void un(vector<int>&a,vector<int>&b){
for(int i=0;i<b.size();i++)
a.push_back(b[i]);
}
void _1(int x,int y){
if(v[poz[x]].size()>v[poz[y]].size()){
un(v[poz[x]],v[poz[y]]);
for(int i=0;i<v[poz[y]].size();i++)
poz[v[poz[y]][i]]=poz[x];
}
else{
un(v[poz[y]],v[poz[x]]);
for(int i=0;i<v[poz[x]].size();i++)
poz[v[poz[x]][i]]=poz[y];
}
}
void _2(int x,int y){
if(poz[x]==poz[y])
fout<<"DA"<<'\n';
else
fout<<"NU"<<'\n';
}
int n,m,i,j;
int c,x,y;
int main()
{
fin>>n>>m;
for(i=1;i<=n;i++){
v[i].push_back(i);
poz[i]=i;
}
for(j=1;j<=m;j++){
fin>>c>>x>>y;
if(c==1)
_1(x,y);
else
_2(x,y);
}
return 0;
}