Pagini recente » Cod sursa (job #619188) | Cod sursa (job #3127522) | Cod sursa (job #975231) | Cod sursa (job #57480) | Cod sursa (job #3214356)
#include <fstream>
using namespace std;
const int nmax = 100005;
int n, m;
int father[nmax];
int find(int node){
if(father[node] < 0){
return node;
}
int tata = find(father[node]);
father[node] = tata;
return tata;
}
void unite(int x, int y){
int r_x = find(x);
int r_y = find(y);
if(r_x == r_y){
return;
}
else {
if(father[r_x] < father[r_y]){
swap(r_x, r_y);
}
father[r_y] += father[r_x];
father[r_x] = r_y;
}
}
int main(){
ifstream f("disjoint.in");
ofstream g("disjoint.out");
f >> n >> m;
for(int i = 1; i <= n; i++){
father[i] = -1;
}
while(m--){
int x, y, z;
f >> z >> x >> y;
if(z == 2){
if(find(x) == find(y)){
g << "DA" << '\n';
}
else g << "NU" << '\n';
}
else if(z == 1){
unite(x, y);
}
}
}