Cod sursa(job #3228159)

Utilizator BiceaToader David Stefan Bicea Data 6 mai 2024 14:46:33
Problema Paduri de multimi disjuncte Scor 0
Compilator c-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");
const int Nmax=10001;//1 reuninune 2 daca sunt in aceeasi submultime
int n,m,sizei[Nmax],t[Nmax],x,y,p,a,b;
int findi(int x)
{
    if(t[x]==x)
        return x;
    else
        findi(t[x]);
}
int main()
{
    f>>n>>m;
    for(unsigned int i=1;i<=n;++i)
    {t[i]=i;
    sizei[i]=1;
    }
    for(unsigned int i=1;i<=m;++i)
    {
        f>>p>>x>>y;
        a=findi(x);
        b=findi(y);
        if(p==2)
        {
            if(a==b)
                g<<"Da";
            else
                g<<"Nu";
        }
        else
        {
            if(sizei[a]>sizei[b])
            {
                t[b]=a;
                sizei[a]+=sizei[b];
            }
            else
            {
                 t[a]=b;
                sizei[b]+=sizei[a];
            }
        }
    }
    return 0;
}