Cod sursa(job #2941745)

Utilizator bogdaniliBogdan Iliescu bogdanili Data 18 noiembrie 2022 11:04:55
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("disjoint.in");
ofstream g("disjoint.out");
int n, m, v[100001];

int findrep (int x)
{
    int aux = x;
    while(aux != v[aux])
        aux = v[aux];

    while(x != aux)
    {
        int nextx = v[x];
        v[x] = aux;
        x = nextx;
    }

    return aux;
}
int main()
{
    f >> n >> m;
    for(int i = 0; i < n; i++)
        v[i]=i;

    int opt, x, y;
    for(int i = 0; i < m; i++)
    {

        f >> opt >> x >> y;
        int a = findrep(x);
        int b = findrep(y);

        if(opt == 1)
            v[a] = b;

        else {
            if(a == b)
                g << "DA\n";

            else
                g << "NU\n";
        }
    }

    return 0;
}