Pagini recente » Cod sursa (job #585) | Cod sursa (job #1450010) | Cod sursa (job #934959) | Cod sursa (job #480394) | Cod sursa (job #2907559)
#include <iostream>
#include <fstream>
using namespace std;
#define NMAX 100005
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n,m;
int p[NMAX];
int size[NMAX];
int get_set(int x){
if(x == p[x]) return x;
else return p[x] = get_set(p[x]);
}
void merge(int x, int y){
if(size[x]<size[y])
p[x] =y, size[y]+=size[x];
else p[y] = x, size[x]+=size[y];
}
int main() {
fin >> n >> m;
for(int i = 1; i <= n; i++){
p[i] = i;
size[i] = 1;
}
for (int i = 1; i <= m; ++i) {
int t,x,y;
fin >> t >> x >> y;
if(t == 1){
int px = get_set(x);
int py = get_set(y);
if(px!=py)merge(px,py);
} else {
if(get_set(x) == get_set(y)) fout << "DA\n";
else fout << "NU\n";
}
}
return 0;
}