#include <cstdioを>
する#include <CStringの>
する#include <iostreamの>
使用して名前空間STD;
CONST INT MAXN = 105;
INT FA [MAXN]、高さ[MAXN]は、
(INT X){検索INT
リターンFA [X]を== FA X [X]:?(FA [X] =(FA [X])を見つける。);
}
/ * {マージ(INT、INT B)を無効
//; FA [(A)検索] =(B)を探します低いバージョンの差し込み深さを増加させるためにマージされてもよい後者に前者だけ
} * /
ボイドマージ(INT、INT B)を{
INT RX =(A)、Ryを探す=(B)検索;
IF(身長[RX] <高さ[さRy])FA [RX] = Ryは、
他のFA [さRy = RX;
IF(身長[RX] ==高さ[さRy] && RX = R-Y)、高さ[RX] ++ ;! // RX RX RY、深さプラス1をマージすることである父セットRY、
} //洗練されたバージョンは、可能な限り、その中のメイン洗練された(実際には、ほとんど以下、O(1)の均等単一ステップの複雑さを共有するパス圧縮しているため)ツリー小さな程度の深さ
(INTメイン){
int型N-;
scanfの( "%のD"、およびN-)。
以下のために(INT I 1 =; I <= N; ++ I)FA [I] =私; // 各親ノードが自ノードで初期化する
ものを見つけるために添加し//パイルものが何であるかと、;
リターン0; //追加することを忘れないでくださいヨ
}
//シンプルなパス圧縮のこの単純なバッチが完成ヒット
冬のトレーニング互いに素セット初心者
おすすめ
転載: www.cnblogs.com/2004-08-20/p/12302555.html
ランキング