Pagini recente » Cod sursa (job #2798159) | Cod sursa (job #2400376) | Cod sursa (job #946798) | Cod sursa (job #2746440) | Cod sursa (job #720683)
Cod sursa(job #720683)
#include<stdio.h>
#include<assert.h>
#include<stdlib.h>
#include<time.h>
#include<vector>
#include<algorithm>
const int knmax = 100005;
int nodes, qrys, dad[knmax];
void read(){
assert(freopen("disjoint.in", "r", stdin) != NULL);
scanf("%d%d", &nodes, &qrys);
srand(time(NULL));
}
void init(){
for(int i = 1; i <= nodes; ++i)
dad[i] = i;
}
int root(int x){
if(dad[x] == x)
return x;
return root(dad[x]);
}
bool query(int x, int y){
if(root(x) == root(y))
return true;
return false;
}
void unite(int x, int y){
int aux_x = root(x), aux_y = root(y);
if(rand() % 2 == 0)
dad[aux_x] = aux_y;
else
dad[aux_y] = aux_x;
}
void write(){
assert(freopen("disjoint.out", "w", stdout) != NULL);
int q_type, q_x, q_y;
for(int i = 1; i <= qrys; ++i){
scanf("%d%d%d", &q_type, &q_x, &q_y);
if(q_type == 1)
unite(q_x, q_y);
else
if(query(q_x, q_y))
printf("DA\n");
else
printf("NU\n");
}
}
int main(){
read();
init();
write();
return 0;
}