Cod sursa(job #2966813)

Utilizator Chris_BlackBlaga Cristian Chris_Black Data 18 ianuarie 2023 15:12:46
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>

using namespace std;
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
int n,m,cer,x,y;
int t[100009];
int radacina(int x)
{
    int rad = x, y;
    while(t[rad]!=0)rad = t[rad];

    while(x!=rad)
    {
        y = t[x];
        t[x] = rad;
        x = y;
    }
    return rad;
}
void unire(int rx,int ry)
{
    t[rx] = ry;
}
int main()
{
    cin>>n>>m;
    while(m--)
    {
        cin>>cer;
        if(cer==1)
        {
            cin>>x>>y;
            int rx = radacina(x),
            ry = radacina(y);
            if(rx!=ry)
                unire(rx,ry);
        }
        else
        {
            cin>>x>>y;
            (radacina(x) == radacina(y)) ? cout<<"DA\n" : cout<<"NU\n";
        }
    }
    return 0;
}