Cod sursa(job #2700995)

Utilizator Eva_SavaEva Maria Birsan Eva_Sava Data 29 ianuarie 2021 15:36:27
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <iostream>
#include <cstdio>
using namespace std;
const int NMAX=100000;
int sef[NMAX+5];
int sef_suprem(int a)
{
    if(sef[a]==a)
        return a;
    else
    {
        sef[a]=sef_suprem(sef[a]);
        return sef[a];
    }
}
void unire(int a, int b)
{
    int sefa,sefb;
    sefa=sef_suprem(a);
    sefb=sef_suprem(b);
    sef[sefa]=sefb;
}
int main()
{
    freopen("disjoint.in","r",stdin);
    freopen("disjoint.out","w",stdout);
    int n,k,tip,x,y,i;
    scanf("%d%d",&n,&k);
    for(i=1;i<=n;i++)
        sef[i]=i;
    for(i=1;i<=k;i++)
    {
        scanf("%d%d%d",&tip,&x,&y);
        if(tip==1)
            unire(x,y);
        else
            if(sef_suprem(x)==sef_suprem(y))
                printf("DA\n");
            else
                printf("NU\n");
    }
    return 0;
}