Cod sursa(job #2861865)

Utilizator vladp1324Vlad Pasare vladp1324 Data 4 martie 2022 16:46:25
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include <fstream>

using namespace std;

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

int n, m, t[100001];

int cauta (int x) {
  int y = x, aux;
  while (y != t[y])
    y = t[y];
  while (x != y) {
    aux = t[x];
    t[x] = y;
    x = aux;
  }
  return x;
}

void uneste (int x, int y) {
  x = cauta (x);
  y = cauta (y);
  t[y] = x;
}

int main()
{
  fin >> n >> m;
  for (int i = 1; i <= n; i++)
    t[i] = i;
  for (int i = 1; i <= m; i++) {
    int op, x, y;
    fin >> op >> x >> y;
    if (op == 1)
      uneste (x, y);
    else {
      if (cauta (x) != cauta (y))
        fout << "NU\n";
      else
        fout << "DA\n";
    }
  }
  return 0;
}