構築道路POJ - 2421(最小スパニングツリー)

 

アイデア:まず、2次元アレイはDIS [] []道路の入力処理が修復された、その対応するDIS [i]が[j]はゼロに設定されます。そして、最終的に

      すべてのDIS [] []ツリーアルゴリズムスパニングクラスカル最小値を用いて得られた、側構造体を保存します。

 

1の#include <iostreamの>
 2の#include <ベクトル>
 3の#include < ストリング >
 4の#include <cmath>
 5の#include < 設定 >
 6の#include <アルゴリズム>
 7の#include <cstdioを>
 8の#include <地図>
 9#含む<CStringの>
 10  
11  使って 名前空間STDを、
12の 
13  のint DIS [ 110 ] [ 110 ]。
14  構造体のエッジ
 15  {
 16      int型A、B。
17      INTコスト;
18 }、エッジ[ 1000010 ]。
19  
20  INTツリー[ 110 ]。
21  
22  INT FindRootで(INT X)
 23  {
 24      であれば(ツリー[X] == - 1 25          リターンX。
26      INT TMP = FindRootで(ツリー[X])。
27      ツリー[X] = TMPと、
28      リターンTMP;
29  }
 30  
31  ブールCMP(エッジE1、エッジE2)
 32  {
 33      リターン e1.cost <e2.cost;
34  }
 35  
36  のint main()の
 37  {
 38      INT N。
39      のscanf(" %d個"、&N)
40      のためにint型 i = 1 ; iが<= N; ++ I)
 41          [I] =ツリー- 1 42          
43      のためにint型 i = 1 ; iは= N <++ I)
 44          のためのINT J = 1 ; J <= N; ++ j)は
 45              のscanf(" %のD "、&DIS [I] [J])。
46      
47      int型Q;
48      のscanf(" %dの"、&Q)。
49      のためにint型 I = 1 ; I <= Q; ++ i)が
 50      {
 51          int型A、B。
52          のscanf(" %D%dの"、&​​、&B)。
53の          DIS [A] [B] = 0 54      }
 55      
56      のint、K = 1 57      のためにint型私は= 1。 ; I <= N; ++ I)
 58          のためのint型 J = 1。 ; J <= N-; ++ J)
 59          {
 60              IF(J = I &&私はJを<)!     //が同じことに注意してください保存側を繰り返さないでください!
61は             、{
 62である                  エッジ[K] II.A = ; I
 63である                  エッジ[K] .B = J;
 64                  エッジ[K] = .cost DIS [I]、[J];
 65                  ++ K;
 66              }
 67          }
 68      替え( +エッジ1、エッジ+K、CMP)。
69      INT ANS = 0 ;
70      のためにint型 I = 1 ; I <K; ++ I)
 71      {
 72          INT RA = FindRootで(エッジ[I] .A)。
73          INT RB = FindRootで(エッジ[I] .B)。
74          であれば(RA =!RB)
 75          {
 76              ツリー[RA] = RB。
77の              ANS + = エッジ[I] .cost。
78          }    
 79      }
 80      
81      のprintf(" %d個の\ nを" 、年)
 82      
83      リターン 0 ;
 84 }

 

おすすめ

転載: www.cnblogs.com/FengZeng666/p/11404856.html