Cod sursa(job #877926)

Utilizator Kira96Denis Mita Kira96 Data 13 februarie 2013 14:33:49
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include<fstream>
#define DIM 100010
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int min(int a,int b)
{
	if(a>b)
	return b;
	return a;
}
int v[DIM],i,n,x,y,m,tip;
int main ()
{
	
	f>>n>>m;
	for(i=1;i<=m;++i)
	{
		f>>tip>>x>>y;
		tip--;
		if(tip)
		{
			while(v[x])
			x=v[x];
			while(v[y])
			y=v[y];
			if(x!=y)
			g<<"NU\n";
			else
			g<<"DA\n";
		}
		else
		{
			if(v[x]&&v[y])
				v[x]=v[y]=min(v[x],v[y]);
			else
			if((!v[x])&&(!v[y]))
				v[x+y-min(x,y)]=min(x,y);
			else
			{
				if(v[x])
					v[x]=y;
				else
				v[y]=x;
			}
				
		}
	}
	return 0;
}