Cod sursa(job #803143)

Utilizator Adrian1997Radulescu Adrian Adrian1997 Data 27 octombrie 2012 09:36:08
Problema Paduri de multimi disjuncte Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int v[1000000],n,m;

int main(void){
	register int i,j,t,x,y;
		
	f>>n>>m;
	for(i=1;i<=n;i++)
		v[i]=-1;
	int x1,y1;
	for(i=1;i<=m;i++){
		f>>t>>x>>y;
		if(t==1){
			//unim radacinile arborilor
			x1=x,y1=y;
			while(v[x1]>0){
				x1=v[x1];
			}
			while(v[y]>0){
				y1=v[y1];
			}
			if(x1<y1){
				v[y1]=x1;
			}
			else{
				v[x1]=y1;
			}
		}
		if(t==2){
			x1=x,y1=y;
			while(v[x1]>0){
				x1=v[x1];
			}
			while(v[y1]>0){
				y1=v[y1];
			}
			if(y1==x1)
				g<<"DA"<<"\n";
			else
				g<<"NU"<<"\n";
		}
	}
	return 0;
}