Cod sursa(job #846401)

Utilizator test_13testing test_13 Data 2 ianuarie 2013 00:42:47
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include <stdio.h>
#include <algorithm>
#include <cmath>
#include <cctype>
#include <cstring>
#include <vector>
using namespace std;
#define Max 100001

int rad[Max];

int tata(int x)
{
	if(x!=rad[x])rad[x]=tata(rad[x]);
	return rad[x];
}

int main()
{
	int n,m,op,x,y;
	freopen("disjoint.in","r",stdin);
	freopen("disjoint.out","w",stdout);
			scanf("%d %d",&n,&m);
			for(int i=1;i<=n;i++)rad[i]=i;
			for(int i=1;i<=m;i++)
			{
				scanf("%d %d %d",&op,&x,&y);
				switch(op)
				{
					case 1: rad[tata(y)]=tata(x); break;
					case 2: printf("%s\n",tata(x)==tata(y)?"DA":"NU");
				}
			}
	return 0;
}