Cod sursa(job #3300081)

Utilizator Benjamin4321234Benjamin Secara Benjamin4321234 Data 12 iunie 2025 18:44:51
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n,k,x,y,cod;
int tatal[100001];

int comp(int x){
    int y=x;
    while(y!=tatal[y]){
        y=tatal[y];
    }
    int xx=x;
    while(xx!=y){
        int next=tatal[xx];
        tatal[xx]=y;
        xx=next;
    }
    return y;
}

void unire(int x, int y){
    int x1=comp(x);
    int y1=comp(y);
    tatal[x1]=y1;
}

int main()
{
    fin>>n>>k;
    for(int i=1;i<=n;i++){
        tatal[i]=i;
    }
    for(int i=1;i<=k;i++){
        fin>>cod>>x>>y;
        if(cod==1){
            unire(x,y);
        }
        else{
            
            if(comp(x)==comp(y)){
                fout<<"DA";
            }
            else{
                fout<<"NU";
            }
            fout<<'\n';
        }
    }

    return 0;
}