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 |
|
|
| 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 |