Cod sursa(job #2033407)

Utilizator IoanZioan zahiu IoanZ Data 6 octombrie 2017 19:24:09
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <cstdio>

using namespace std;

int t[100005];

int findset(int x)
{
    while (t[x]!=x)
        x=t[x];
    return x;
}

void unire(int x,int y)
{
    t[y]=t[x];
}

int main()
{
    freopen("disjoint.in","r",stdin);
    freopen("disjoint.out","w",stdout);
    int n,m,i,x,y,cod,xt,yt;
    scanf("%d%d",&n,&m);
    for (i=1; i<=n; i++)
        t[i]=i;
    for (i=1; i<=m; i++)
    {
        scanf("%d%d%d",&cod,&x,&y);
        xt=findset(x);
        yt=findset(y);
        if (cod==1)
        {
            if (xt!=yt)
                unire(xt,yt);
        }
        else if (xt==yt)
            printf("DA\n");
        else
            printf("NU\n");
    }
    return 0;
}