Pagini recente » Cod sursa (job #1063299) | Cod sursa (job #2597397) | Cod sursa (job #1481837) | Cod sursa (job #485065) | Cod sursa (job #3140666)
#include <fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
const int NMAX = 100001;
int t[NMAX], rang[NMAX];
void leaga(int x, int y){
if (rang[x] > rang[y])
t[y] = x;
else
t[x] = y;
if (rang[x] == rang[y])
rang[y]++;
}
int radacina(int x){
if (t[x] == x)
return x;
return t[x] = radacina(t[x]);
}
int main(){
int n, m;
f >> n >> m;
for (int i = 1; i <= n; ++i){
t[i] = i;
rang[i] = 1;
}
for (int i = 1; i <= m; ++i){
int cer, x, y;
f >> cer >> x >> y;
if (cer == 1) {
int r1 = radacina(x);
int r2 = radacina(y);
leaga(r1, r2);
}
else {
int r1 = radacina(x);
int r2 = radacina(y);
if (r1 == r2)
g << "DA\n";
else
g << "NU\n";
}
}
return 0;
}