Cod sursa(job #2310390)

Utilizator mjmilan11Mujdar Milan mjmilan11 Data 31 decembrie 2018 14:21:03
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <bits/stdc++.h>

using namespace std;

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

const int NMAX = 100005;

int parent[NMAX];

int get_root(int node)
{
    if(parent[node]==-1) return node;
    int aux=node;
    while(parent[node]>0)
    {
        node=parent[node];
    }
    int root=node;
    node=aux;
    while(node!=root)
    {
        aux=parent[node];
        parent[node]=root;
        node=aux;
    }
    return node;
}

int main()
{
    int n,m;
    fin >> n >> m;
    for(int i=1;i<=n;i++)
    {
        parent[i]=-1;
    }
    int operatie,x,y,a,b;
    for(int i=1;i<=m;i++)
    {
        fin >> operatie >> x >> y;
        if(operatie==1) parent[y]=x;
        else if(operatie==2)
        {
            a=get_root(x);
            b=get_root(y);
            if(a==b) fout << "DA" << '\n';
            else fout << "NU" << '\n';
        }
    }
    return 0;
}