Cod sursa(job #3317617)

Utilizator matei425352Ionescu Matei Cristian matei425352 Data 24 octombrie 2025 17:35:20
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.72 kb
#include <bits/stdc++.h>

using namespace std;

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

int n,m;
int cod, x, y;
int sef[100001];

int boss(int nod){
    if(nod==sef[nod])
        return nod;
    else{
        return sef[nod]=boss(sef[nod]);
    }
}

void unire(int x, int y){
    int sef_x=boss(x);
    int sef_y=boss(y);
    sef[sef_y]=sef_x;
}

int main()
{
    f>>n>>m;
    for(int i=1;i<=n;i++)
        sef[i]=i;
    for(int i=1;i<=m;i++){
        f>>cod>>x>>y;
        if(cod==1){
            unire(x,y);
        }
        else if(cod==2){
            if(boss(x)==boss(y))
                o<<"DA\n";
            else
                o<<"NU\n";
        }
    }
    return 0;
}