Pagini recente » Cod sursa (job #2131259) | Cod sursa (job #3135481) | Cod sursa (job #700336) | Cod sursa (job #2407471) | Cod sursa (job #311363)
Cod sursa(job #311363)
#include <fstream>
using namespace std;
#define NUME "disjoint"
ifstream fi(NUME".in");
ofstream fo(NUME".out");
#define MAXN 100001
int N, M;
int T[MAXN], rang[MAXN];
void init()
{
int i;
for (i = 1; i <= N; ++i) {
T[i] = i;
rang[i] = 1;
}
}
int multime(int a) {
if (T[a] != T[T[a]])
T[a] = multime(T[a]);
return T[a];
}
void uneste(int a, int b) {
a = multime(a);
b = multime(b);
if (a == b) return;
if (rang[a] < rang[b])
T[a] = b;
else
T[b] = a;
}
int main()
{
fi >> N >> M;
init();
int op, a, b;
while (M--) {
fi >> op >> a >> b;
if (op == 1) {
uneste(a, b);
} else {
fo << (multime(a) == multime(b) ? "DA" : "NU") << "\n";
}
}
return 0;
}