Cod sursa(job #803157)

Utilizator BlackLordFMI Alex Oprea BlackLord Data 27 octombrie 2012 10:01:01
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include <fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int t[100010], i, j, n, m, x, y, z, rx, ry;

int rad(int x){
	while(t[x]>0)
		x=t[x];
	return x;
}

int main(){
	f>>n>>m;
	for(i=1; i<=m; i++)
	{
		f>>z>>x>>y;
		if(z==1)
		{
			rx=rad(x);
			ry=rad(y);
			if(t[rx]<t[ry])
			{
				t[rx]+=t[ry];
				t[ry]=rx;
			}
			else
			{
				t[ry]+=t[rx];
				t[rx]=ry;
			}
		}
		else
		{
			rx = rad(x);
			ry = rad(y);
			if (rx == ry)
				g<<"DA\n";
			else
				g<<"NU\n";
		}
	}
	f.close();
	g.close();
	return 0;
}