Cod sursa(job #2700989)

Utilizator vlad_dimuVlad Dimulescu vlad_dimu Data 29 ianuarie 2021 15:30:47
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>
#define MAXN 100000

using namespace std;

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

int sef[MAXN];

int find( int i ) {
  if ( sef[i] == i )
    return i;
  return sef[i] = find( sef[i] );
}

void unionn( int i, int j ) {
  int sefi, sefj;
  sefi = find( i );
  sefj = find( j );
  sef[sefj] = sefi;
}

int main(){
  int n, m, q, x, y, i, sx, sy;
  fin >> n >> m;
  for( i = 0; i < n; i++ )
    sef[i] = i;
  for( i = 0; i < m; i++ ){
    fin >> q >> x >> y;
    x--;
    y--;
    if( q == 1 )
      unionn( x, y );
     else{
      sx = find( x );
      sy = find( y );
      if( sx == sy )
        fout <<"DA\n";
      else
        fout << "NU\n";
     }
  }
  return 0;
}