Cod sursa(job #881069)

Utilizator Claudiu95Vartolomei Alexandru Claudiu Claudiu95 Data 17 februarie 2013 17:59:45
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int i,op,e1,e2,t[100002],nr[100002],n,m,
j;

int parcurge(int x){
	int s=t[x];
	while(s!=t[s]){
		s=t[s];
	}
	return s;
}
int main(){
	f>>n>>m;
	for(i=1;i<=n;++i){
		t[i]=i;
		nr[i]=1;
	}
	for(i=1;i<=m;++i){
		f>>op>>e1>>e2;
		if(op==1){
			if(nr[e1]>nr[e2])
				t[e2]=1;
			else
				if(nr[e1]<nr[e2])
					t[e1]=e2;
				else{
					++nr[e1];
					t[e2]=e1;
				}
		}
		else{
		
			if(parcurge(e1)==parcurge(e2)){
					g<<"DA"<<endl;
				}
				else
					g<<"NU"<<endl;
		}
	}
	return 0;
}