Pagini recente » Cod sursa (job #1980951) | Cod sursa (job #2836333) | Cod sursa (job #917754) | Cod sursa (job #2209255) | Cod sursa (job #2512548)
#include <cstdio>
#define maxPcts 101024
using namespace std;
int pcts;
int parents[maxPcts];
int weights[maxPcts];
void initialSet() {
int i;
for(i=0;i<maxPcts;++i) {
weights[i]=1;
parents[i]=-1;
}
}
int goToDaddy(int pos) {
if(parents[pos]<0) {
return pos;
}
else {
parents[pos]=goToDaddy(parents[pos]);
return parents[pos];
};
}
void oonion() {
int x,y;
scanf("%d%d",&x,&y);
goToDaddy(x);
x=parents[x];
goToDaddy(y);
y=parents[y];
if(weights[x]>weights[y]) {
parents[y]=x;
weights[x]+=weights[y];
}
else {
parents[x]=y;
weights[y]+=weights[x];
}
}
void find() {
int x,y;
scanf("%d%d",&x,&y);
goToDaddy(x);
goToDaddy(y);
if(parents[x]==parents[y]&&parents[x]>=0) {
printf("DA\n");
}
else {
printf("NU\n");
}
}
void solve() {
int q,iq,task;
scanf("%d%d",&pcts,&q);
for(iq=0;iq<q;++iq) {
scanf("%d",&task);
if(task-1) {
find();
}
else {
oonion();
}
}
}
int main() {
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
initialSet();
solve();
return 0;
}