Cod sursa(job #2787388)

Utilizator marcumihaiMarcu Mihai marcumihai Data 23 octombrie 2021 10:45:29
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f ("disjoint.in");
ofstream g ("disjoint.out");

int parinte[10005];
int n,q;
void unire(int x, int y)
{
    parinte[y]=x;
}


int Find(int x)
{
    int par=x;
    int aux;
    while(par!=0)
    {
        aux=par;
        par=parinte[par];
        cout<<par<<" "<<parinte[par]<<"\n";
    }
    par=x;
    int aux2;
    while(par!=0)
    {
        aux2=par;
        par=parinte[par];
        if(par!=aux)
        parinte[par]=aux;

    }
    return aux;
}




int main()
{
    f>>n>>q;

    for(int query=1; query<=q; ++query)
    {
        int tip;
        f>>tip;
        if(tip==1)
        {
            int x ;
            int y;
            f>>x>>y;
            unire(x, y);
        }
        else
        {
            int x, y;
            f>>x>>y;
            int tata1=Find(x);
            int tata2=Find(y);
            if(tata1==tata2)
                g<<"DA"<<"\n";
            else
                g<<"NU"<<"\n";

        }
    }
    return 0;
}