Cod sursa(job #1770189)

Utilizator SolcanMihaiSolcan Mihai Andrei SolcanMihai Data 3 octombrie 2016 21:04:54
Problema Paduri de multimi disjuncte Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <cstdio>

using namespace std;

int n, m;
int parinti[100005];

int gasireParinti(int x)
{
    if(parinti[x] == x)
    {
        return x;
    }
    else
    {
        return gasireParinti(parinti[x]);
    }
}

int main()
{
    freopen("disjoint.in", "r", stdin);
    freopen("disjoint.out", "w", stdout);

    int tmp1, tmp2, tmp3;

    scanf("%d %d", &n, &m);

    for(int i = 0; i < n; i++)
    {
        parinti[i] = i;
    }

    for(int i = 0; i < m; i++)
    {
        scanf("%d %d %d", &tmp1, &tmp2, &tmp3);

        if(tmp1 == 1)
        {
            parinti[gasireParinti(tmp2)] = gasireParinti(tmp3);
        }
        else
        {
            if(gasireParinti(tmp2) == gasireParinti(tmp3))
            {
                printf("DA\n");
            }
            else
            {
                printf("NU\n");
            }
        }
    }



    return 0;
}