Cod sursa(job #2042854)

Utilizator crion1999Anitei cristi crion1999 Data 19 octombrie 2017 12:05:38
Problema Paduri de multimi disjuncte Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include <fstream>
std::ifstream fi("disjoint.in");
std::ofstream fo("disjoint.out");
int parent[100000];
int N, M;
int k, x, y;

int check(int node)
{
    if(parent[node] == node) return node;
    else return parent[node] = check(parent[node]);
}

void unite(int x, int y)
{
    parent[check(x)] = check(y);
}

int main()
{
    fi>>N>>M;
    for(int i=1; i<=N; ++i) parent[i] = i;
    for(int i=1; i<=M; ++i)
    {
        fi>>k>>x>>y;
        if(k==1) unite(x,y);
        else if(check(x) == check(y)) fo<<"DA\n";
        else fo<<"NU\n";
    }
}