提出 #421760
ソースコード 拡げる
#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;
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | B - Union Find |
| ユーザ | rmn_31415 |
| 言語 | C++ (GCC 4.9.2) |
| 得点 | 100 |
| コード長 | 1274 Byte |
| 結果 | AC |
| 実行時間 | 880 ms |
| メモリ | 1688 KiB |
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 100 / 100 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| 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 |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| 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 |