Cod sursa(job #3142885)

Utilizator vladsipunct5555Butnrau Vlad vladsipunct5555 Data 25 iulie 2023 12:45:41
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin ("disjoint.in");
ofstream fout ("disjoint.out");

int tata[100001];
int n, m;

int findd(int nod) {
    while (tata[nod] != nod)
        nod = tata[nod];
    return nod;
}

void unionn (int x, int y) {

    int tatax = findd(x);
    int tatay = findd(y);

    if (tatax != tatay)
        tata[x] = tatay;
}

bool verif(int x, int y)
{
    int tatax = findd(x);
    int tatay = findd(y);

    if (tatax == tatay)
        return 1;
    return 0;
}

int main() {
    fin >> n >> m;
    for (int i = 1; i <= n; i ++)
        tata[i] = i;

    for (int k = 1; k <= m; k ++) {
        int q, x, y;
        fin >> q >> x >> y;

        if (q == 1)
            unionn(x, y);
        else
            if (verif(x, y))
                fout << "DA" << endl;
            else
                fout << "NU" << endl;

    }
    return 0;
}