Cod sursa(job #3163012)

Utilizator diana_dd03Dorneanu Diana diana_dd03 Data 30 octombrie 2023 12:30:41
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.69 kb
#include <bits/stdc++.h>
using namespace std;

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

int t[100005];
/**
t[i]= 0, daca i este rad
    =j,daca j este predecesorul lui i in drumul de la i la rad
*/
int n, m, op, x, y;

int FindRoot(int x){
    int rad=x;
    while(t[rad]!=0)
        rad=t[rad];

    return rad;
}

void Union(int x, int y){
    t[y]=x;
}

int main(){
    fin>>n>>m;
    for(int i=1;i<=m;i++){
        fin>>op>>x>>y;
        x=FindRoot(x);
        y=FindRoot(y);
        if(op==1)
            Union(x, y);

        else
            if(x==y)
                fout<<"DA\n";
            else fout<<"NU\n";
    }
    return 0;
}