Cod sursa(job #657176)

Utilizator kkkarla5Martin Carla - Maria kkkarla5 Data 5 ianuarie 2012 21:39:33
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include<fstream>
using namespace std;

int v1,v2,n,m,i,tip,t[101000],x,y,nr[101000];

int cauta(int nod)
{
	while(t[nod])nod=t[nod];
	return nod;
}

int main()
{
	ifstream f("disjoint.in");
	ofstream g("disjoint.out");
	f>>n>>m;
	for(i=1;i<=m;i++)
    {
		f>>tip>>x>>y;
		if(tip==1)
		{
			v1=cauta(x);
			v2=cauta(y);
			if(nr[v1]==nr[v2])
			{
				nr[v1]++;
				t[v2]=v1;
			}
			else
			if(nr[v1]<nr[v2])
				t[v1]=v2;
			else
			    t[v2]=v1;
		}
		if(tip==2)
		{
			if(cauta(x)==cauta(y))
			g<<"DA\n"; 
			else 
			g<<"NU\n";
		}
  }
	
return 0;
}