冬のトレーニング互いに素セット初心者

#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