Cod sursa(job #3350489)

Utilizator SGLDCASA SI PODUL SGLD Data 8 aprilie 2026 19:03:35
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.99 kb
#include <fstream>

using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int card[100001];
int rad[100001];
void unionberlin(int a,int b)
{
    if(card[a]<card[b])
    {
        swap(a,b);
    }
    card[a]+=card[b];
    rad[b]=a;
}
int findd(int x)
{
    if(rad[x]==x)
    {
        return x;
    }
    rad[x]=findd(rad[x]);
    return rad[x];
}
int main()
{
    int n,m,cod,e,f;
    in>>n>>m;
    for(int i=1; i<=n; i++)
    {
        rad[i]=i;
        card[i]=1;
    }
    for(int i=1; i<=m; i++)
    {
        in>>cod>>e>>f;
        if(cod==1)
        {
            int f2=findd(f);
            int e2=findd(e);
            unionberlin(e2,f2);
        }
        else
        {
            int f2=findd(f);
            int e2=findd(e);
            if(e2==f2)
            {
                out<<"DA"<<endl;
            }
            else
            {
                out<<"NU"<<endl;
            }
        }
    }
    return 0;
}