Pagini recente » Cod sursa (job #1325118) | Cod sursa (job #270005) | Cod sursa (job #2283786) | Cod sursa (job #1605434) | Cod sursa (job #1794826)
#include <cstdio>
using namespace std;
struct elem{
int t, nr;
};
int n, m;
elem v[100001];
int getR(int p){
int p1 = p;
while(v[p].t!=-1){
p = v[p].t;
}
while(v[p1].t!=-1){
int np = v[p1].t;
v[p1].t = p;
p1 = np;
}
return p;
}
int main()
{
FILE *f = fopen("disjoint.in", "r");
FILE *f1 = fopen("disjoint.out", "w");
fscanf(f, "%d %d", &n, &m);
for(int i=0;i<n;i++){
v[i].t = -1;
v[i].nr = 1;
}
for(int i=0;i<m;i++){
int c, x, y;
fscanf(f, "%d %d %d", &c, &x, &y);
if(c == 1){
int rx = getR(x);
int ry = getR(y);
if(v[rx].nr<v[ry].nr){
v[rx].t = ry;
v[ry].nr += v[rx].nr;
}
else{
v[ry].t = rx;
v[rx].nr += v[ry].nr;
}
}
else if(c == 2){
if(getR(x) == getR(y)){
fprintf(f1, "DA\n");
}
else{
fprintf(f1, "NU\n");
}
}
}
return 0;
}