Cod sursa(job #2812659)

Utilizator bostanlucastefanBostan Luca-Stefan bostanlucastefan Data 4 decembrie 2021 21:16:45
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>

using namespace std;

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

const int N=1e5+2;

int x,vfx,y,vfy;
int n,m,op,i,j;
int rad[N];

int go(int u){
    if(rad[u]==u)
        return u;
    return rad[u]=go(rad[u]);
}

int main()
{
    fin>>n>>m;
    for(i=1; i<=n; i++)
        rad[i]=i;

    for(i=1; i<=m; i++)
    {
        fin>>op>>x>>y;
        switch(op)
        {
            case 1: vfx=go(x);
                    vfy=go(y);
                    if(vfx!=vfy)
                        rad[vfy]=vfx;
                    break;
            case 2: if(go(x)==go(y))
                        fout<<"DA\n";
                    else
                        fout<<"NU\n";
                    break;
        }
    }
    return 0;
}