Cod sursa(job #2075966)

Utilizator madalin98Gherghe Madalin madalin98 Data 25 noiembrie 2017 21:35:01
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int t[100005],r[100005];
int radacina(int x)
{
    int a,y;
    a=x;
    while(a!=t[a])
            a=t[a];
    return a;
}
int main()
{
    int n,m,i,x,y,p,b,a;
    f>>n>>m;
    for(i=1;i<=n;++i){t[i]=i;r[i]=1;}
    for(i=1;i<=m;++i)
    {
        f>>p>>x>>y;
        if(p==1)
        {
            a=radacina(x);
            b=radacina(y);
            if(a!=b){
            if(r[a]>r[b])t[b]=a;
              else t[a]=b;
            if(r[a]==r[b])++r[b];}
        }
          else{
            a=radacina(x);
            b=radacina(y);
            if(a==b)g<<"DA\n";
              else g<<"NU\n";
        }
    }
    return 0;
}