Cod sursa(job #967716)

Utilizator dropsdrop source drops Data 28 iunie 2013 12:32:55
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 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){ rad(b); rad(a); rr[rr[a]]=rr[b]; rad(a); } else
		if(rr[a]==rr[b]) gg << "DA\n"; else gg << "NU\n";
	}
	return 0;
}