Cod sursa(job #967707)

Utilizator dropsdrop source drops Data 28 iunie 2013 12:26:35
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <iostream>
#include <fstream>
#include <cmath>
#include <vector>
#include <bitset>
#include <queue>
#include <deque>
#include <list>
#include <set>
#include <ctime>
#include <string>
#include <cstring>
#include <algorithm>
using namespace std;
ifstream ff("disjoint.in");
ofstream gg("disjoint.out");
#define max 100001
int n, m, rr[max];

int rad(int a){
	if(rr[a]==a) return a; else {
		rr[a]=rad(rr[a]);
		return rr[a];
	}
}

int main(){
	int o, a, b;
	ff >> n >> m;
	for(int i=1;i<=n;i++) rr[i] = i;
	for(int i=0;i<m;i++){
		ff >> o >> a >> b;
		if(o==1) rr[rad(a)]=rad(b); else
		if(rad(a)==rad(b)) gg << "DA\n"; else gg << "NU\n";
	}
	return 0;
}