Cod sursa(job #3237553)

Utilizator tsg38Tsg Tsg tsg38 Data 9 iulie 2024 22:36:18
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.62 kb
#include <bits/stdc++.h>

using namespace std;

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

const int DIM = 1e5 + 1;

int fth[DIM];

int root( int u ) {
  if ( fth[u] == u ) return u;
  return fth[u] = root(fth[u]);
}
void join( int u, int v ) {
  fth[root(u)] = root(v);
}

int main() {
  ios_base::sync_with_stdio(0);
  fin.tie(0);
  int n, q, tp, u, v;

  fin >> n >> q;
  for ( int i = 1; i <= n; ++i ) {
	fth[i] = i;
  }
  while ( q-- ) {
	fin >> tp >> u >> v;
    if ( tp == 1 ) {
	  join(u, v);
	} else {
	  fout << (root(u) == root(v) ? "DA\n" : "NU\n");
	}
  }
  fin.close();
  fout.close();
  return 0;
}