Cod sursa(job #2335625)

Utilizator YusyBossFares Yusuf YusyBoss Data 4 februarie 2019 13:01:49
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>

using namespace std;

int t[100001], h[100001];

ifstream cin ("disjoint.in");
ofstream cout ("disjoint.out");

int f (int x) {
  if (x == t[x])
    return x;
  t[x] = f(t[x]);
  return t[x];
}

void u(int x, int y) {
  x--;
  y--;
  x = f(x);
  y = f(y);
  t[x] = y;
}

void afisare (int x, int y) {
  x--;
  y--;
  if (f(x) == f(y))
    cout << "DA";
  else
    cout << "NU";
  cout << "\n";
  return;
}

int main() {
  int i, n, m, op, x, y;
  cin >> n >> m;
  for (i = 0; i < n; i++) {
    h[i] = 1;
    t[i] = i;
  }
  for (i = 0; i < m; i++) {
    cin >> op >> x >> y;
    if (op == 1)
      u(x, y);
    else
      afisare(x, y);
  }
  return 0;
}