Cod sursa(job #1417171)

Utilizator ValeraShulghin Valera Valera Data 9 aprilie 2015 19:38:32
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>
#include <vector>

using namespace std;

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

int n,m,x,y,cod,i;
vector<int> a;

void uneste(int x,int y){
    while(a[y]!=y){
        y = a[y];
    }
    a[y] = x;
}

void gaseste(int x,int y){
    int m1,m2;
    while(a[x]!=x){
        a[x] = a[a[x]];
        x = a[x];
    }
    m1 = a[x];

    while(a[y]!=y){
        a[y] = a[a[y]];
        y = a[y];
    }
    m2 = a[y];

    if (m1==m2)
        g<<"DA\n";
    else
        g<<"NU\n";
}

 int main(){
    f>>n>>m;

    for (i=0;i<=n;i++)
        a.push_back(i);

    for (i=0;i<m;i++){
        f>>cod>>x>>y;
        if (cod==1){
            uneste(x,y);
        }
        else if (cod==2){
            gaseste(x,y);
        }

    }

    return 0;
 }