Cod sursa(job #2038978)

Utilizator CammieCamelia Lazar Cammie Data 14 octombrie 2017 10:26:21
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>

#define MAXN 100002

using namespace std;

ifstream fin("disjoint.in");
ofstream fout("disjoint.out");

int p[MAXN], n;

inline void Init() {
    for (int i = 1; i <= n; i++)
        p[i] = i;
}

inline int parinte(int nod) {
    if (p[nod] == nod)
        return nod;
    return p[nod] = parinte(p[nod]);
}

inline void Read() {
    int m, cer, x, y, p1, p2;

    fin >> n >> m;
    Init();

    for (int i = 1; i <= m; i++) {
        fin >> cer >> x >> y;

        if (cer == 1) {
            p[parinte(x)] = parinte(y);
        }
        else {
            p1 = parinte(x);
            p2 = parinte(y);

            if (p1 == p2)
                fout << "DA\n";
            else
                fout << "NU\n";
        }
    }
}

int main() {
    Read();

    fin.close(); fout.close(); return 0;
}