Cod sursa(job #3285281)

Utilizator Alex_567Toma Alex Alex_567 Data 12 martie 2025 17:33:51
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>
///varianta 2
///100p
using namespace std;

const int NMAX=1000001;

ifstream f("disjoint.in");
ofstream g("disjoint.out");

int N,M,
    T[NMAX]; /// vectori de tati( paduri de multimi dijuncte)

int Find(int x) /// cautare cu compresie a drumului
{
    if(T[x]==0) return x;
    return T[x]=Find(T[x]);
}

inline void Union(int rx,int ry)
{
    T[rx]=ry;
}

int main()
{
    int cod,x,y,rx,ry;
    f>>N>>M;
    while(M--)
    {
        f>>cod>>x>>y;
        rx=Find(x);
        ry=Find(y);
        if(cod==1)
        {
            ///if(rx!=ry) /// se garanteaza ca x si y nu se vor afla in aceeasi multime
            Union(rx,ry);
        }
        else if(rx==ry)
            g<<"DA\n";
        else
            g<<"NU\n";
    }
    f.close();
    g.close();
    return 0;
}