Cod sursa(job #1955046)

Utilizator RaZxKiDDavid Razvan RaZxKiD Data 5 aprilie 2017 19:49:34
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int ROOT[100005],n,m;

int getRoot(int x){
    if(x==ROOT[x])
        return x;
    ROOT[x]=getRoot(ROOT[x]);
    return ROOT[x];
}
void uni(int x, int y){
    x=getRoot(x);
    y=getRoot(y);
    if(x!=y)
        ROOT[x]=y;
}
void read(){
    in>>n>>m;
    for(int i=1;i<=n;i++)
        ROOT[i]=i;
}
void queries(){
    int op,x,y;
    for(int i=1;i<=m;i++){
        in>>op>>x>>y;
        if(op==1)
            uni(x,y);
        else{
            out<<((getRoot(x)==getRoot(y)) ? "DA\n" : "NU\n");
        }
    }
}
int main(){
    read();
    queries();
    return 0;
}