Cod sursa(job #2073159)

Utilizator zukatomoGall Janos zukatomo Data 22 noiembrie 2017 19:19:08
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <iostream>
#include <fstream>

using namespace std;

int tomb[100001]={0};

int root(int a){
    int i=a;
    while(i!=tomb[i]){
        i=tomb[i];
    }
    return i;
}
void unite(int a, int b){
    int r1, r2;
    r1 = root(a);
    r2 = root(b);
    if(r1!=r2) tomb[r1] = r2;
}

bool querry(int a, int b){
    int r1, r2;
    r1 = root(a);
    r2 = root(b);
    if(r1==r2) return true;
    return false;
}



int main()
{
    ifstream be("disjoint.in");
    ofstream ki ("disjoint.out");
    int n, m, muvelet, a,b;
    be >> n >> m;
    for(int i =0;i<n;i++){tomb[i]=i;}
    for(int i=1;i<=m;i++){
        be >> muvelet >> a >> b;
        if(muvelet==1) unite(a,b);
        else if(querry(a,b)) ki << "Da\n";
             else ki << "Nu\n";
    }
    cout << "Hello world!" << endl;
    return 0;
}