Cod sursa(job #2825145)

Utilizator alextmAlexandru Toma alextm Data 4 ianuarie 2022 09:38:20
Problema Paduri de multimi disjuncte Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.57 kb
#include <bits/stdc++.h>
using namespace std;

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

int sef[100001];

int Find(int x) {
  if(sef[x] == x)
    return x;
  return Find(sef[x]);
}

void Union(int a, int b) {
  int R1 = Find(a);
  int R2 = Find(b);
  sef[R1] = R2;
}

int main() {
  int n, m, t, x, y;
  fin >> n >> m;

  for(int i = 1; i <= n; i++)
    sef[i] = i;

  while(m--) {
    fin >> t >> x >> y;
    if(t == 1)
      Union(x, y);
    else
      fout << (Find(x) == Find(y) ? "DA\n" : "NU\n");
  }

  return 0;
}