Cod sursa(job #1857217)

Utilizator GeorginskyGeorge Georginsky Data 25 ianuarie 2017 22:11:12
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include <fstream>
#define N 100005
using namespace std;
int n, m, p[N];
int find_set(int x){
    if(p[x]==x)return x;
    int a=find_set(p[x]);
    p[x]=a;
    return a;
}

void merge_sets(int x, int y){p[find_set(x)]=find_set(y);}

int main(){
    ifstream in("disjoint.in");
    ofstream out("disjoint.out");
    in>>n>>m;
    int op, a, b;
    for(int i=1; i<=n; i++)p[i]=i;
    for(int i=1; i<=m; i++){
        in>>op>>a>>b;
        if(op==1)merge_sets(find_set(a), find_set(b));
        else out<<((find_set(a)==find_set(b))?"DA":"NU")<<"\n";
    }
    return 0;
}