Pagini recente » Cod sursa (job #156560) | Cod sursa (job #1985428) | Cod sursa (job #661736) | Cod sursa (job #3040714) | Cod sursa (job #2293128)
#include<fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int tata[100001], rang[100001], n, m;
int rad(int x){
if(tata[x] == 0){
return x;
}
else{
int y = rad(tata[x]);
tata[x] = y;
return y;
}
}
void leaga_componentele(int x, int y){
int radx = rad(x);
int rady = rad(y);
if(radx != rady){
if(rang[radx] > rang[rady]){
tata[rady] = radx;
}
else if(rang[radx] < rang[rady]){
tata[radx] = rady;
}
else{
tata[radx] = rady;
rang[radx] ++;
}
}
}
int main()
{
int x, y, cerinta;
f>>n>>m;
for(int i = 0 ; i < m ; i++){
f>>cerinta>>x>>y;
if(cerinta == 1){
leaga_componentele(x, y);
}
else{
if(rad(x) == rad(y))
g<<"DA";
else
g<<"NU";
g<<'\n';
}
}
return 0;
}