Cod sursa(job #2568011)

Utilizator Anastasia11Susciuc Anastasia Anastasia11 Data 3 martie 2020 20:12:06
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <cstring>
#define Nmax 100005
#define INF 0x3f3f3f3f
#define MOD 1999999973

using namespace std;

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

int n, m;
int tt[Nmax];

int root(int x)
{
    int r=x;
    while (r != tt[r]) r=tt[r];

    while (x != tt[x])
    {
        int y=tt[x];
        tt[x]=r;
        x=y;
    }
    return r;
}

int main()
{
    f >> n >> m;
    for (int i = 1; i <= n; i++) tt[i]=i;
    for (int i = 1, x, y, op; i <= m; i++)
    {
        f >> op >> x >> y;
        if (op == 1)
        {
            int X=root(x), Y=root(y);
            tt[x]=y;
        }
        else if (op == 2)
        {
            if (root(x) != root(y)) g << "NU\n";
            else g << "DA\n";
        }
    }
    return 0;
}