Cod sursa(job #1801827)

Utilizator cyber_ghSoltan Gheorghe cyber_gh Data 9 noiembrie 2016 17:13:29
Problema Paduri de multimi disjuncte Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");


int p[100100],n,m;

int find(int nod){
	if (p[nod]==nod) return nod;
	else{
		int x=find(p[nod]);
		p[nod]=x;
		return x;
	}
	
}

void unite(int a,int b){
	a=find(a);
	b=find(b);
	p[a]=b;
}

int main(){
	fin >>n>>m;
	for(int i=1;i<=n;i++) p[i]=i;
	for(int i=1;i<=m;i++){
		int u,x,y;
		fin>>u>>x>>y;
		cout <<u<<x<<y<<endl;
		if (u==1) unite(x,y);
		else{
			if (find(x)==find(y)) fout<<"DA"<<endl;
			else fout <<"NU"<<endl;
		}
		
	}
	
	
	return 0;
}