Pagini recente » Clasament lmk_1 | Cod sursa (job #2287226) | Cod sursa (job #1518639) | Cod sursa (job #1126664) | Cod sursa (job #1449554)
#include<stdio.h>
int parent[100100],nr[100100];
int N,M,x,y,z;
int root(int k) {
int ret = k;
while(parent[ret]!=ret) {
ret=parent[ret];
}
int curr = k;
while(parent[curr]!=curr) {
int temp = parent[curr];
parent[curr] = ret;
curr = temp;
}
return ret;
}
void connect(int y, int z) {
int d = root(y);
int e = root(z);
if(nr[d] < nr[e]) {
parent[d] = e;
nr[e] += nr[d];
} else {
parent[e] = d;
nr[d] += nr[e];
}
}
int main() {
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d%d",&N,&M);
for(int i=1;i<=N;++i) {
parent[i] = i;
nr[i] = 1;
}
for(int i=1;i<=M;++i) {
scanf("%d%d%d",&x,&y,&z);
if(x==2) {
if(root(y) == root(z)) {
printf("DA\n");
}
else {
printf("NU\n");
}
}
if(x==1) {
connect(y,z);
}
}
return 0;
}