Cod sursa(job #995545)

Utilizator GigelDaTesteTestulSuprem GigelDaTeste Data 9 septembrie 2013 11:33:50
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.53 kb
#include<fstream>
#define dim 100007
using namespace std;

ifstream f("disjoint.in");
ofstream g("disjoint.out");
int n,m,op,a,b,x,y,i;
int T[dim];
int tata(int a) {
	int x;
	x=a;
	while(T[x]>0){
		x=T[x];
	}
	return x;
}
int main () {
	f>>n>>m;
	for(i=1;i<=n;++i){
		T[i]=-1;
	}
	
	for(i=1;i<=m;++i){
		f>>op>>x>>y;
		a=tata(x);
		b=tata(y);
		if(op==1){
			if(a!=b){
				T[a]=T[a]+T[b];
				T[b]=a;
			}
		}
		else{
			if(a==b){
				g<<"DA\n";
			}
			else{
				g<<"NU\n";
			}
		}
	}
	return 0;
	
}