Cod sursa(job #3251282)

Utilizator Andrei08Petcu Andrei Vlad Andrei08 Data 25 octombrie 2024 16:30:53
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int sef[100001];
int sef_suprem(int x){
    if (sef[x]==x)
        return x;
    else
        return sef[x]=sef_suprem(sef[x]);

}
void unire(int x,int y){
    int sef1=sef_suprem(x);
    int sef2=sef_suprem(y);
    sef[sef1]=sef2;
}
int main(){
    int n,m,x,y,tip,i;
    fin>>n>>m;
    for (i=1;i<=n;i++)
        sef[i]=i;
    for (i=1;i<=m;i++){
        fin>>tip>>x>>y;
        if (tip==1)
            unire(x,y);
        else if (sef_suprem(x)==sef_suprem(y))
            fout<<"DA"<<endl;
        else
            fout<<"NU"<<endl;
    }
    return 0;
}