Cod sursa(job #2806012)

Utilizator bibozisbibogelStoian Cristian bibozisbibogel Data 22 noiembrie 2021 11:35:31
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include <bits/stdc++.h>
#define DIM 100005
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n,m, t[DIM],nrNod[DIM];
void init()
{
    for(int i=1;i<=n;i++)
    {
        t[i]=i;
        nrNod[i]=1;
    }
}
int radacina(int x)
{
    if(x!=t[x])
        return t[x]=radacina(t[x]);
    else
        return x;
}
int main (){
    fin>>n>>m;
    init();
    for(int i=1;i<=m;i++)
    {
       int cod,x,y;
       fin>>cod>>x>>y;
       int radx=radacina(x);
       int rady=radacina(y);
       if(cod==1)
       {
           if(radx!=rady){
             if(nrNod[radx]>nrNod[rady])
             {
                nrNod[radx]+=nrNod[rady];
                t[rady]=radx;
             }
             else
             {
               nrNod[rady]+=nrNod[radx];
               t[radx]=rady;
             }
           }
       }
       else
       {
           if(radx==rady)
             fout<<"DA"<<'\n';
           else
             fout<<"NU"<<'\n';
       }
    }
    return 0;
}