Cod sursa(job #2018761)

Utilizator cyber_ghSoltan Gheorghe cyber_gh Data 5 septembrie 2017 21:48:36
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <iostream>
#include <fstream>

using namespace std;

int N,M,parent[100020];

int source(int a){
    if (parent[a] == a) return a;
    int x = source(parent[a]);
    parent[a] = x;
    return x;
}

void join(int a,int b){
    a = source(a);
    b = source(b);
    parent[a] = b;
}

int main()
{
    ifstream fin("disjoint.in");
    ofstream fout("disjoint.out");
    fin >>N>>M;
    for (int i = 1; i <= N;i++) parent[i] = i;
    while(M--){
        int a,b,c;
        fin >>a>>b>>c;
        if (a == 1) {
            join(b,c);

        }else {
            if (source(b) == source(c)) fout <<"DA";
            else fout <<"NU";
            fout <<"\n";
        }

    }
    return 0;
}