Cod sursa(job #1648001)

Utilizator Vlad_lsc2008Lungu Vlad Vlad_lsc2008 Data 10 martie 2016 23:20:48
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <iostream>
#include <cstdio>
using namespace std;
int n,m1,m[100008];

int rad(int nod)
{
   if(m[nod]==nod) return nod;
   m[nod]=rad(nod);
   return m[nod];
}

int unite(int p1,int p2)
{
    m[p2]=p1;
}

int main()
{
    int i,op,v1,v2;
    freopen("disjoint.in","r",stdin);
    freopen("disjoint.out","w",stdout);
    scanf("%d%d",&n,&m1);
    for(i=1;i<=n;i++) m[i]=i;
    for(;m1;m1--)
    {
        scanf("%d%d%d",&op,&v1,&v2);
        if(op==2)
        {
            if(rad(v1)==rad(v2)) printf("DA\n");
                            else printf("NU\n");
        } else unite(rad(v1),rad(v2));
    }
    fclose(stdin);
    fclose(stdout);
    return 0;
}