Cod sursa(job #2692231)

Utilizator cristia_razvanCristia Razvan cristia_razvan Data 1 ianuarie 2021 19:33:49
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.68 kb
#include <bits/stdc++.h>
using namespace std;

ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n, m;
int t[100001];

int Find(int x)
{
    int r = x, y;
    while (t[r] != 0) r = t[r];
    while (x != r)
    {
        y = t[x];
        t[x] = r;
        x = y;
    }
    return r;
}

inline void Union(int rx, int ry)
{
    t[ry] = rx;
}
int main()
{
    int op, x, y,rx, ry;
    fin >> n >> m;
    while (m--)
    {
        fin >> op >> x >> y;
        rx = Find(x);
        ry = Find(y);
        if (op == 1)
            Union(rx, ry);
        else fout << ((rx == ry)?"DA\n":"NU\n");
    }
    fin.close();
    fout.close();
    return 0;
}