Cod sursa(job #3348011)

Utilizator AlexandruNNNAlexandru Nicolita AlexandruNNN Data 19 martie 2026 10:56:30
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <bits/stdc++.h>
using namespace std;
#define MAXN 100000

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

int nxt[MAXN + 1];

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

int Find(int x){
    int sef,aux;

    sef = x;
    while (nxt[sef])
        sef = nxt[sef];

    while (nxt[x]){
        aux = nxt[x];
        nxt[x] = sef;
        x = aux;
    }

    return sef;
}

int main(){
    int n,m,cer,x,y,i;

    fin >> n >> m;

    for (i = 1; i <= m; i ++){
        fin >> cer >> x >> y;
        if (cer == 1)
            Union(x,y);
        else{
            x = Find(x);
            y = Find(y);
            if (x == y)
                fout << "DA";
            else
                fout << "NU";

            fout << '\n';
        }
    }

    fin.close();
    fout.close();

    return 0;
}