Cod sursa(job #2782399)

Utilizator vladuandreeaVladu Andreea Teodora vladuandreea Data 12 octombrie 2021 12:47:21
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>

using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int v[100005],f[100005];
int unire(int rx,int ry)
{
    if(v[rx]>v[ry])
        f[ry]=rx;
    else if(v[rx]<v[ry])
        f[rx]=ry;
    else if(v[rx]==v[ry])
    {
        f[rx]=ry;
        v[ry]++;
    }
}
int multime(int a)
{
    while(a!=f[a])
        a=f[a];
    return a;
}

int main()
{
    int n,m,cer,x,y,i;
    fin>>n>>m;
    while(n>0)
    {
        f[n]=n;
        n--;
    }
    for(i=0;i<m;i++)
    {
        fin>>cer>>x>>y;
        if(cer==1)
            unire(x,y);
        else
            if(multime(x)==multime(y))
                fout<<"DA"<<'\n';
            else
                fout<<"NU"<<'\n';
    }
    return 0;
}