Cod sursa(job #3167854)

Utilizator DomilDomil Serban Domil Data 11 noiembrie 2023 10:26:25
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>

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

int n,m,cod,x,y;
int vec[100005];
int rang[100005];

int search_tata(int nod)
{
    while(vec[nod])
        nod=vec[nod];
    return nod;
}

int main()
{
    fin>>n>>m;
    for(int i=1;i<=m;i++)
    {
        fin>>cod>>x>>y;
        int a=search_tata(x);
        int b=search_tata(y);
        if(cod==1)
        {
            if(rang[a]==0) rang[a]++;
            if(rang[b]==0) rang[b]++;

            if(rang[a]>=rang[b])
            {
                rang[a]+=rang[b];
                vec[b]=a;
            }
            else
            {
                rang[b]+=rang[a];
                vec[a]=b;
            }
         }
        if(cod==2)
        {
            if(a==b)
                fout<<"DA"<<endl;
            else
                fout<<"NU"<<endl;
        }
    }
}