Pagini recente » Cod sursa (job #586394) | Cod sursa (job #1231167) | Cod sursa (job #2691993) | Cod sursa (job #3210471) | Cod sursa (job #2763794)
#include <fstream>
#include <unordered_map>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int T[200005], n, M, x, y, c;
unordered_map<int, int> m;
void leaga(int r1, int r2) {
if(T[r1] > T[r2]) {
T[r1] = T[r2];
} else {
T[r2] = T[r1];
}
}
int rad(int a) {
if(a == T[a]) {
return a;
} else {
return T[a] = rad(T[a]);
}
}
int main() {
for(int i = 1; i <= 200005; i++) {
T[i] = i;
}
fin >> n >> M;
for(int i = 1; i <= M; i++) {
fin >> c >> x >> y;
if(m[x] == 0) {
m[x] = m.size();
}
if(m[y] == 0) {
m[y] = m.size();
}
x = m[x];
y = m[y];
if(c == 1) {
int r1 = rad(x), r2 = rad(y);
if(r1 != r2) {
leaga(r1, r2);
}
} else {
fout << (rad(x) == rad(y) ? "DA\n" : "NU\n");
}
}
fin.close();
fout.close();
return 0;
}