Pagini recente » Cod sursa (job #1671779) | Cod sursa (job #1866410) | Cod sursa (job #2962329) | Cod sursa (job #1515927) | Cod sursa (job #1201407)
#include <fstream>
using namespace std;
const int MAX_N = 100002;
int N, M;
int H[MAX_N], F[MAX_N];
inline int find(int x) {
int R = x;
while (R != F[R])
R = F[R];
while (F[x] != x) {
int temp = F[x];
F[x] = R;
x = temp;
}
return R;
}
inline void unite(int x, int y) {
F[find(y)] = find(x);
}
int main() {
ifstream f("disjoint.in");
ofstream g("disjoint.out");
f >> N >> M;
for (int i = 1; i <= N; ++i)
F[i] = i, H[i] = 1;
for (int i = 1, t, x, y; i <= M; ++i) {
f >> t >> x >> y;
if (t == 1)
unite(F[x], F[y]);
else if (find(F[x]) == find(F[y]))
g << "DA\n";
else g << "NU\n";
}
f.close();
g.close();
return 0;
}