Cod sursa(job #1830312)

Utilizator crazylamaRiclea Andrei crazylama Data 16 decembrie 2016 15:41:57
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>
#include <vector>
#include <cmath>
using namespace std;

ifstream f("disjoint.in");
ofstream g("disjoint.out");

void ReuniuneMult(int n, vector<int> &v, int x, int y)
{
    int mini = min(x, y);
    int maxx = max(x, y);
    for (int i = 1; i <= n; ++i)
        if (v[i] == maxx)
            v[i] = mini;
}

int main()
{
    int n, m;
    f >> n >> m;
    vector<int> v;
    v.resize(n + 1);
    for (int i = 1; i <= n; ++i)
        v[i] = i;
    for (int i = 1; i <= m; ++i)
    {
        int x, y, cod;
        f >> cod >> x >> y;
        if (cod == 1)
            ReuniuneMult(n, v, x, y);
        else
        {
            if (v[x] == v[y])
                g << "DA\n";
            else
                g << "NU\n";
        }
    }
    return 0;
}