Cod sursa(job #3254516)

Utilizator Tud00rCristea Tudor Tud00r Data 7 noiembrie 2024 18:01:42
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include <fstream>
#include<algorithm>
#include <iomanip>
#include <vector>
#include <cmath>
using namespace std;

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

int sef[100001],n,m,q,v,w;

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(){
    fin>>n>>m;
    for(int i=1;i<=n;i++){
        sef[i]=i;
    }
    for(int i=0;i<m;i++){
        fin>>q>>v>>w;
        if(q==1){
            unire(v,w);
        }
        else{
            if(sef_suprem(v)==sef_suprem(w))
                fout<<"DA"<<endl;
            else
                fout<<"NU"<<endl;
        }
    }
    return 0;
}