Cod sursa(job #2422964)

Utilizator andreixxiLungu Andrei andreixxi Data 20 mai 2019 15:01:52
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int t[100000], n, m;
int root (int k)
{
    if (t[k] == 0)
        return k;
    else
        return t[k];
}
void unire (int k, int p)
{
    int rk = root(k), rp = root(p);
    if(rk != rp)
        t[rk] = rp;
}
int main ()
{
    f>>n; //nr multimi
    f>>m; //nr operatii efectuate
    for(int i=1; i<=m; i++)
    {
        int cod, x, y; //tipul operatiei + 2 nr in [1,n]
        f>>cod>>x>>y;
        if(cod == 1)
            unire(x, y);
        else if (cod == 2)
        {
            if(root(x) != root(y)) //se afla in aceeasi multime
                g<<"NU\n";
            else
                g<<"DA\n";
        }
    }
}