Cod sursa(job #3164224)

Utilizator biancaivascuBianca Ivascu biancaivascu Data 2 noiembrie 2023 14:34:46
Problema Paduri de multimi disjuncte Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <iostream>
#include <fstream>

using namespace std;
#define MaxN 100000

int t[MaxN], rang[MaxN];

int tata(int x)
{
    if(t[x]==x)
        return x;
    int k;
    k=tata(t[x]);
    t[x]=k;
    return k;
}
int main()
{
    ifstream in("disjoint.in");
    ofstream out("disjoint.out");
    int n, m, i, type, x, y;
    in>>n>>m;
    for(i=1; i<=n; i++)
    {
        t[i]=i;
        rang[t[i]]=1;
    }
    for(i=0; i<m; i++)
    {
        in>>type;
        if(type==1)
        {
            in>>x>>y;
            if(rang[tata(x)]>rang[tata(y)])
            {
                t[y]=x;
            }
            else if(rang[tata(y)]>rang[tata(x)])
            {
                t[x]=y;
            }
            else
            {
                t[x]=y;
                rang[tata(y)]++;
            }
        }
        else
        {
            in>>x>>y;
            if(tata(x)==tata(y)) out<<"DA"<<'\n';
            else out<<"NU"<<'\n';
        }
}
return 0;
}