Cod sursa(job #2419767)

Utilizator George2699Pietrareanu George George2699 Data 9 mai 2019 13:04:11
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <iostream>
#include<fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int tata[100000],cod,x,y,grad[100000],fx,fy,n,m,i;
int findfather(int node)
{
    if(tata[node]==node)
        return node;
    tata[node]=findfather(tata[node]);
    return tata[node];
}
int main()
{
    f>>n>>m;
    for(i=1;i<=n;++i)
    {
        tata[i]=i;
        grad[i]=1;
    }
    for(i=1;i<=m;++i)
    {
        f>>cod>>x>>y;
        fx=findfather(x);
        fy=findfather(y);
        if(cod==2)
        {
            if(fx==fy)
                g<<"da";
            else
                g<<"NU";
        }
        else
            if(grad[x]>grad[y])
            {
                tata[fy]=fx;
                grad[fx]=grad[fx]+grad[fy];
            }
            else
            {
                tata[fx]=fy;
                grad[fy]=grad[fy]+grad[fx];
            }
    }

    return 0;
}