Cod sursa(job #380595)

Utilizator cristikIvan Cristian cristik Data 6 ianuarie 2010 20:21:09
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include <stdio.h>
#define max 100010
int tata[max],rang[max],i,n,j,m,op,x,y;
int find(int x)
{
     if(tata[x]==x) return x;
     tata[x]=find(tata[x]);
     return tata[x];
}
void unite(int x,int y)
{
    tata[find(x)]=find(y);
}
int main()
{
    freopen("disjoint.in","r",stdin);
    freopen("disjoint.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(i=1; i<=n; i++)
    {
        rang[i]=1;
        tata[i]=i;
    }
    for(; m>0; m--)
    {
        scanf("%d%d%d",&op,&x,&y);
        if(op==1) unite(x,y);
        else
         if(find(x)==find(y)) printf("DA\n");
         else printf("NU\n");
    }
    return 0;
}