Cod sursa(job #1969730)

Utilizator Corneliu10Dumitru Corneliu Corneliu10 Data 18 aprilie 2017 17:03:18
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include <cstdio>

using namespace std;

int gr[100010];
int grupa(int i)
{
    if(gr[i] == i) return i;
    gr[i] = grupa(gr[i]);
    return gr[i];
}

void uniongr(int i,int j)
{
    gr[grupa(i)] = grupa(j);
}

int main()
{
    int n,m,a,b,i,p;
    freopen("disjoint.in","r",stdin);
    freopen("disjoint.out","w",stdout);

    scanf("%d%d",&n,&m);
    for(i=1;i<=n;i++) gr[i] = i;

    for(i=1;i<=m;i++)
    {
        scanf("%d%d%d",&p,&a,&b);
        if(p==1) uniongr(a,b);
        else printf(grupa(a)==grupa(b)?"DA\n":"NU\n");
    }
}