Cod sursa(job #2693339)

Utilizator Cosma05Cosma Tudor Cosma05 Data 5 ianuarie 2021 15:41:05
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <bits/stdc++.h>

using namespace std;

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

const int lim = 100005;
int n,m,op,t[lim];

int Root(int x)
{
    if(x == t[x]) return x;
    else return t[x] = Root(t[x]); //leaga fiecare nod de pe drumul format de radacina si nodul x, de radacina
}

void Unite(int a ,int b)
{
    t[a] = b;
}

int main()
{
    fin >> n >> m;

    for(int i=1 ; i<=n ; i++)
        t[i]=i ;

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

        if(op == 1)
        {
            int a = Root(x);
            int b = Root(y);
            if(a != b)
                Unite(a , b);
        }

        else
            if(Root(x) == Root(y)) fout<<"DA"<<'\n';
            else fout<<"NU"<<'\n';
    }
    return 0;
}