Cod sursa(job #3337506)

Utilizator Roberto_CChirvasitu Roberto Roberto_C Data 28 ianuarie 2026 11:00:10
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <bits/stdc++.h>
using namespace std;
const int NMAX = 1e5;
int n,q;
int papa[NMAX+1];

struct DSU{

  void init()
  {
    for(int i = 1; i <= n; i++)
      papa[i] = i;
  }

  int find_parent(int x)
  {
    if(x != papa[x])
      return papa[x] = find_parent(papa[x]);
    else
      return x;
  }

  void unite(int st, int dr)
  {
    int p_x = find_parent(st);
    int p_y = find_parent(dr);
    if(p_x != p_y)
      papa[p_x] = p_y;
  }

};
int main()
{
    cin >> n >> q;
    DSU dsu;
    dsu.init();
    while(q--)
    {
      int c,st,dr;
      cin >> c >> st >> dr;
      if(c == 1)
        dsu.unite(st,dr);
      else
        cout << ((dsu.find_parent(st) == dsu.find_parent(dr)) ? "DA" : "NU") << '\n';
    }

    return 0;
}