Submission #421760


Source Code Expand

#include <iostream>
#include <cstdlib>

using namespace std;

enum Query {
  CONCAT = 0,
  JUDGE = 1
};

const static int VN_MAX = 100010;
int v_parent[ VN_MAX ];
int v_rank[ VN_MAX ];

void uf_init( int vn ) {
  for( int i = 0; i < vn; i++ ) {
    v_parent[ i ] = i;
    v_rank[ i ] = 0;
  }
}

int uf_root( int vid ) {
  if( v_parent[ vid ] == vid ) {
    return vid;
  }
  return v_parent[ vid ] = uf_root( v_parent[ vid ] ); // !
}

bool uf_issamegroup( int vid1, int vid2 ) {
  return uf_root( vid1 ) == uf_root( vid2 );
}

void uf_unite( int vid1, int vid2 ) {
  int r1 = uf_root( vid1 );
  int r2 = uf_root( vid2 );
  if( r1 == r2 ) {
    return;
  }

  if( v_rank[ r1 ] >= v_rank[ r2 ] ) {
    v_parent[ r2 ] = r1;
    if( v_rank[ r1 ] == v_rank[ r2 ] ) {
      v_rank[ r1 ]++;
    }
  } else {
    v_parent[ r1 ] = r2;
  }
}

int main() {
  int vn, qn;
  cin >> vn >> qn;
  uf_init( vn );
  for( int qi = 0; qi < qn; qi++ ) {
    int qtype, v1, v2;
    cin >> qtype >> v1 >> v2;
    if( qtype == CONCAT ) {
      uf_unite( v1, v2 );
    } else if( qtype == JUDGE ) {
      cout << ( uf_issamegroup( v1, v2 ) ? "Yes" : "No" ) << endl;
    } else {
      // error
    }
  }

  return EXIT_SUCCESS;
}

Submission Info

Submission Time
Task B - Union Find
User rmn_31415
Language C++ (GCC 4.9.2)
Score 100
Code Size 1274 Byte
Status AC
Exec Time 880 ms
Memory 1688 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 100 / 100
Status
AC × 1
AC × 19
Set Name Test Cases
Sample 00_sample_01.txt
All 00_sample_01.txt, subtask_01_01.txt, subtask_01_02.txt, subtask_01_03.txt, subtask_01_04.txt, subtask_01_05.txt, subtask_01_06.txt, subtask_01_07.txt, subtask_01_08.txt, subtask_01_09.txt, subtask_01_10.txt, subtask_01_11.txt, subtask_01_12.txt, subtask_01_13.txt, subtask_01_14.txt, subtask_01_15.txt, subtask_01_16.txt, subtask_01_17.txt, subtask_01_18.txt
Case Name Status Exec Time Memory
00_sample_01.txt AC 26 ms 804 KiB
subtask_01_01.txt AC 498 ms 920 KiB
subtask_01_02.txt AC 24 ms 1564 KiB
subtask_01_03.txt AC 724 ms 800 KiB
subtask_01_04.txt AC 857 ms 1568 KiB
subtask_01_05.txt AC 65 ms 796 KiB
subtask_01_06.txt AC 73 ms 1568 KiB
subtask_01_07.txt AC 755 ms 920 KiB
subtask_01_08.txt AC 880 ms 1688 KiB
subtask_01_09.txt AC 23 ms 920 KiB
subtask_01_10.txt AC 25 ms 1688 KiB
subtask_01_11.txt AC 729 ms 732 KiB
subtask_01_12.txt AC 861 ms 1564 KiB
subtask_01_13.txt AC 640 ms 800 KiB
subtask_01_14.txt AC 30 ms 1572 KiB
subtask_01_15.txt AC 745 ms 808 KiB
subtask_01_16.txt AC 871 ms 1568 KiB
subtask_01_17.txt AC 650 ms 1576 KiB
subtask_01_18.txt AC 628 ms 1568 KiB