Cod sursa(job #2936130)

Utilizator iulia.talpalariuIulia-Georgiana Talpalariu iulia.talpalariu Data 8 noiembrie 2022 09:58:42
Problema Paduri de multimi disjuncte Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.1 kb
#include <vector>
#include <fstream>

using namespace std;
ifstream fileIn("disjoint.in");
ofstream fileOut("disjoint.out");


class Graph {
    int N;
    int M;
    vector <int> r;

    public:
        void initializeaza_r();
        void reuneste(int a, int b) ;
        void rezolva();


};

void Graph::initializeaza_r() {
    r.resize(N + 1, 0);
    for( int i = 0; i <= N; i++) {
        r[i]=i;
    }

}


void Graph::reuneste(int a, int b) {
    int r1 = r[a];
    int r2 = r[b];
    for( int k = 1; k <= N ; k++) {
        if (r[k] == r2) {
            r[k] = r1;
        }
    }
}




void Graph:: rezolva() {
    fileIn >> N >> M;
    initializeaza_r();
    int op, a, b;
    while(M) {
        fileIn >> op >> a >> b;
        if (op == 1) {
            reuneste(a,b);
        } else {
            if (r[a] == r[b]) {
                fileOut << "DA\n";
            } else {
                fileOut << "NU\n";

            }
        }
        M--;
    }



}


int main()  {
    Graph my_graph;
    my_graph.rezolva();


    return 0;

}