Cod sursa(job #2804117)

Utilizator NadiraBodrogean Nadira Nadira Data 20 noiembrie 2021 23:06:49
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include <bits/stdc++.h>
const int NMax=100005;
using namespace std;
ifstream fin ("disjoint.in");
ofstream fout ("disjoint.out");
int N, Q;
int T[NMax];
int rad(int nod)
{
    if(T[nod] == nod)
        return nod;
    return (T[nod] = rad(T[nod]));
}
void uneste(int nod1, int nod2)
{

    int r1 = rad(nod1);
    int r2 = rad(nod2);
    T[r2] = r1;
}
int main()
{
    int i,P, x, y;
    fin >> N >> Q;
    for( i=1; i<=N; i++)
        T[i] = i;
    for(i=1;i<=Q;i++)
        {
        fin >> P >> x >> y;
        if(P == 1)
            uneste(x, y);
        else
        {
            if(rad(x) == rad(y))
                fout << "DA"<<'\n';
            else fout << "NU"<<'\n';
        }

    }

    return 0;
}