Cod sursa(job #3193348)

Utilizator biancaivascuBianca Ivascu biancaivascu Data 14 ianuarie 2024 14:49:30
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <iostream>
#include <fstream>

using namespace std;
#define MaxN 100000
int f[MaxN], height[MaxN];

int findd(int x) {
    if(f[x]==x) return x;
    return f[x]=findd(f[x]);
}

void unite(int x, int y) {
    int fatherx, fathery;
    fatherx=findd(x);
    fathery=findd(y);
    if(fatherx!=fathery) {
        f[fatherx]=fathery;
    }
}
int main() {
    ifstream in("disjoint.in");
    ofstream out("disjoint.out");
    int n, m, i, type, x, y;
    in>>n>>m;
    for(i=0; i<n; i++) {
        f[i]=i;
    }
    for(i=0; i<m; i++) {
        in>>type>>x>>y;
        if(type==1)
            unite(x, y);
        else {
            int fatherx, fathery;
            fatherx=findd(x);
            fathery=findd(y);
            if(fatherx!=fathery) {
                out<<"NU"<<'\n';
            }
            else out<<"DA"<<'\n';
        }
    }
        return 0;
}