Cod sursa(job #302257)

Utilizator rethosPaicu Alexandru rethos Data 8 aprilie 2009 19:33:53
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.48 kb
#include <stdio.h>
#define NM 100001
int r[NM];
int n,m;
int rad(int x)
{if (r[x]==x) return x;
 r[x]=rad(r[x]);
 return r[x];
}
int main()
{freopen("disjoint.in","r",stdin);
 freopen("disjoint.out","w",stdout);
 scanf("%d %d",&n,&m);
 int i;
 for (i=1;i<=n;i++) r[i]=i;
 int x,y;
 while (m--)
	 {scanf("%d %d %d",&i,&x,&y);
	  if (i==1)
		  {r[rad(x)]=rad(y);
		  }
		  else
		  {if (rad(x)==rad(y)) printf("DA\n");
			  else printf("NU\n");
		  }
	 }
 return 0;
}