Cod sursa(job #2232869)

Utilizator Anakin1001George Giorgiu Gica Anakin1001 Data 21 august 2018 15:22:14
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>

using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int x,y,i,n,m,v[100001],cod;
void reuniune(int x,int y){
    if(v[x]>v[y]){
        v[y]=v[y]+v[x];
        v[x]=y;
    }
    else{
        v[x]=v[x]+v[y];
        v[y]=x;
    }
}
int parinte(int x){
    while(v[x]>0)
        x=v[x];
    return x;
}
int main()
{   f>>n>>m;
    for(i=1;i<=n;i++){
        v[i]=-1;
    }
    for(i=1;i<=m;i++){
        f>>cod>>x>>y;
        if(cod==1){
            x=parinte(x);
            y=parinte(y);
            reuniune(x,y);
        }
        else{
            x=parinte(x);
            y=parinte(y);
            if(x==y)
                g<<"DA"<<'\n';
            else
                g<<"NU"<<'\n';
        }
    }
    return 0;
}