Cod sursa(job #749344)

Utilizator geniucosOncescu Costin geniucos Data 16 mai 2012 18:20:54
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include<cstdio>
#include<vector>
using namespace std;
int m,x1,y1,i,n,tip,x,y,b[100002];
vector < int > h[200002];
vector < int >::iterator it;
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d",&n);
scanf("%d",&m);
for(i=1;i<=n;i++)
{
	b[i]=i;
	h[i].push_back(i);
}
for(i=1;i<=m;i++)
{
	scanf("%d",&tip);
	scanf("%d",&x);
	scanf("%d",&y);
	if(tip==2)
	{
		if(b[x]==b[y]) printf("DA\n");
		else printf("NU\n");
	}
	else
	{
		x1=b[x];
		y1=b[y];
		for(it=h[x1].begin();it!=h[x1].end();it++)
		{
			h[y1].push_back(*it);
			b[*it]=y1;
		}
		h[x1].clear();
	}
}
return 0;
}