Cod sursa(job #2302657)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 14 decembrie 2018 22:53:36
Problema Paduri de multimi disjuncte Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.58 kb
#include<stdio.h>
int n,m,x,y,z,c,d,p[100001],r[100001];
int F(int i)
{
	return p[i]==i?i:F(p[i]);
}
int main() 
{
    freopen("disjoint.in","r",stdin),freopen("disjoint.out","w",stdout),scanf("%d%d",&n,&m);
    for(x=1;x<=n;x++)
        p[x]=x;
    while(m--) 
	{
        scanf("%d%d%d",&x,&y,&z);
        if(x==1) 
		{
            c=F(y),d=F(z);
            if(r[c]>r[d])
            	p[d]=c;
            else
            	p[c]=d;
            if(r[c]==r[d])
                r[d]++;
        }
        else
            printf("%s\n",F(y)==F(z)?"DA":"NU");
    }
}