Cod sursa(job #709738)

Utilizator iuli1505Parasca Iuliana iuli1505 Data 8 martie 2012 15:58:19
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<cstdio>
#include<vector>
#define nmax 100001
using namespace std;
int n,m,cod,x,y,dad[nmax];
vector<int> ch[nmax];
int main()
{
	int i,min,max;
	vector<int>::iterator it;
	freopen("disjoint.in","r",stdin);
	freopen("disjoint.out","w",stdout);
	scanf("%d%d", &n, &m);
	for(i=1;i<=n;i++)
	{
		dad[i]=i;
		ch[i].push_back(i);
	}
	for(i=1;i<=m;i++)
	{
		scanf("%d%d%d", &cod, &x, &y);
		if(cod==1)
		{
			if(dad[x]<dad[y])
			{
				min=dad[x];
				max=dad[y];
			}
			else
			{
				min=dad[y];
				max=dad[x];
			}
			for(it=ch[max].begin();it!=ch[max].end();it++)
			{
				dad[*it]=min;
				ch[min].push_back(*it);
			}
		}
		else
			if(dad[x]==dad[y])
				printf("DA\n");
			else
				printf("NU\n");
	}
	return 0;
}