問題へのPAT 1013グレードソリューション - 互いに素設定パス圧縮+

トピック分析:

この問題Nは1〜1000の範囲である表題の互いに素なセットのデータ入力を知っていると題する予備ブラウザのテンプレートであり、Mは、接続関係の各レコードの構造を介して、0〜1000 ^ 2の範囲であり、P []配列各ノードのレコードと、k個のクエリのために、再メンテナンスP []配列、及び各差分を排除しなければならないノードが占有し直されることがあるたびに、ノードのリンク関係P []配列を維持し、最終的に数-2答えは(職業のセットは別のポイントである必要があり、N N-1セットがエッジに接続することができる必要)設定されています

1つの#include <iostreamの>
 2  使用して 名前空間STDを、
3  
4  構造体ノード{
 5      INT  から6      int型へ。
7 } [ 1000005 ]。
8  int型 P [ 1005 ]。
9  int型N、M、K。
10  
11  int型の検索(INT X){
 12      INT Y =のX。
13      一方、(P [X] =!X){
 14          、X = P [X]。
15      }
 16     // パスコンプレッサケースは、Xルートである
。17      ながら(!P [Y] = {X)
 18は、         INT T = Y;             // ビットを予約する経路上の各Yノードに対して
19          のy P = [Y];             / / このケースでは、まだルート照会する上記ために
20である          P [T] =のX;             // yはP [Y]の値となっており、tはyおよびP [以前Y]の値が前に記録されています未満、及びそのパスが圧縮され、それがXと直接なる
21は     }
 22が     リターンX;
 23である }
 24  
25  ボイド連合(のINTの X、INT Y){
 26は     int型 = FX 検索(X);
 27      int型 FY =検索(Y)
 28      IF(FXが=!FY){
 29          P [FX] = FY;
 30      }    
 31である }
 32  
33である ボイドのinit(INT 占める){
 34である     ためINT I = 1 ; I <= N; I ++は) P [I] = I;
 35      のためにint型私は= 1 ; I <= M、Iは++ ){
 36          // 念頭に維持互いに素なセット軸受1:1の関係に応じて占有都市は関与していない
37          IF([I] から!&& = A [I] .TO占拠!= 占拠){
 38は              連合(A [I]の。[I] .TO)。
39          }
 40      }
 41  }
 42  
43  空隙ラン(){
 44      INT ANS = 0 45      のためには、int型 i = 1 ; iがn = <; iは++ ){
 46          であれば(P [I] == I){
 47の              ANS ++ 48          }
 49      }    
 50      のprintf(" %d個の\ n "、ANS - 2 )。
51  } 
 52  
53  INTメイン(){
 54      ながら(scanf関数(" %D%D%D "、&​​N、&M、&K)!= EOF){
 55          のためのint型 I = 1 ; I <= M Iは++ ){
 56              のscanf(" % D%D 。、&[I] から&、[I] .TO)。            
57          }
 58          intが占めます。 
59          のためにint型 i = 1 ; iが= Kを<; Iは++ ){
 60              のscanf(" %dの"、&占めます)。
61             // たびに初期化互いに素なセット
62は             (占拠)INIT;
 63れる             // 行番号は、各時刻における少なくとも添加することを得る
64              RUNを();
 65          }
 66      }
 67      リターン 0 ;
 68 }

 

おすすめ

転載: www.cnblogs.com/findview/p/11666697.html
おすすめ