Cod sursa(job #1344458)

Utilizator andreeadeacAndreea Ioana Deac andreeadeac Data 16 februarie 2015 19:03:01
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>
using namespace std;

ifstream in("disjoint.in");
ofstream out("disjoint.out");
int n,m,t[100001],size[100001];

int radacina(int x)
{
    if (t[x] != x)
        t[x] = radacina(t[x]);
    return t[x];
}

void unire(int x, int y){
    int radx,rady;
    radx=radacina(x);
    rady=radacina(y);
    t[radx]=rady;
}

bool connected(int x, int y){
    return radacina(x)==radacina(y);
}

int main()
{
    in>>n>>m;
    int i,x,y,tip;
    for(i=1;i<=n;i++){
        t[i]=i;
        size[i]=1;
    }
    for(i=1;i<=m;i++){
        in>>tip>>x>>y;
        if(tip==1){
            unire(x,y);
        }
        else{
            bool rez=connected(x,y);
            if(rez==true)
                out<<"DA\n";
            else
                out<<"NU\n";
        }
    }
    return 0;
}