Cod sursa(job #881101)

Utilizator Claudiu95Vartolomei Alexandru Claudiu Claudiu95 Data 17 februarie 2013 18:30:56
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int t[100100],nr[100100],n,m,x1,x2,x3;

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