Cod sursa(job #2755522)

Utilizator RaresMateiMatei Rares Cristian RaresMatei Data 27 mai 2021 16:16:37
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include <fstream>

using namespace std;

ifstream f("disjoint.in");

ofstream g("disjoint.out");

int n,m,rang[100005],T[100005];

int multime(int x)
{
    if(T[x]!=x)
        T[x]=multime(T[x]);

    return T[x];

}

void reuneste(int x,int y)
{
    x=multime(x);

    y=multime(y);

    if(rang[x]>rang[y]) T[y]=x;
    else T[x]=y;

    if(rang[x]==rang[y]) rang[x]++;

}
int main()
{
    f>>n>>m;

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

    for(int i=1; i<=m; i++)
    {
        int a,x,y;

        f>>a>>x>>y;

        if(a==1) reuneste(x,y);

        if(a==2)
        {
            if(multime(x)==multime(y)) g<<"DA"<<'\n';
            else g<<"NU"<<'\n';

        }
    }
    return 0;
}