Pagini recente » Cod sursa (job #484495) | Cod sursa (job #1652889) | Cod sursa (job #2461479) | Cod sursa (job #311420) | Cod sursa (job #2207075)
#include <fstream>
#define N 100010
using namespace std;
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
int numar[N],principal[N];
int radacina(int x){
if(principal[x] == 0)
return x;
principal[x] = radacina(principal[x]);
return principal[x];
}
void reuniune(int x,int y){
int a = radacina(x),b = radacina(y);
if(numar[a] > numar[b])
{
numar[a] += numar[b];
principal[b] = a;
}else{
numar[b] += numar[a];
principal[a] = b;
}
}
bool verific(int x,int y){
if(radacina(x) == radacina(y))
return true;
return false;
}
int main()
{
int a,b,operatie,x,y,i;
cin >> a >> b;
for(i = 1;i <= a;i++){
numar[i] = 1;
}
for(i = 1;i <= b;i++){
cin >> operatie >> x >> y;
if(operatie == 1){
reuniune(x,y);
}else if(operatie == 2){
if(verific(x,y))
cout << "DA\n";
else
cout << "NU\n";
}
}
return 0;
}