Cod sursa(job #2173194)

Utilizator cubaLuceafarul cuba Data 15 martie 2018 21:05:21
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
const int nMax = 100005;
int tata[nMax];
inline void Union(int x, int y) {
    tata[x] = y;
}
inline int Find(int x) {
    if(tata[x] != x) {
        tata[x] = Find(tata[x]);
    }
    return tata[x];
}
int main()
{
    int n, m, x, y, op;
    f >> n >> m;
    for(int i = 1; i <= n; i++) {
        tata[i] = i;
    }
    for(int i = 1; i <= m; i++) {
        f >> op >> x >> y;
        int nx = Find(x);
        int ny = Find(y);
        if(op == 1) {
            Union(x, y);
        }
        else {
            if(nx == ny) {
                g << "DA\n";
            }
            else {
                g << "NU\n";
            }
        }
    }
    return 0;
}