P4779 [テンプレート]単一始点最短パス(スタンダード・エディション)/ vv123コード仕様

 
 
 
優先キュー最適化プロセスのダイクストラアルゴリズム:
1.初期化D [S] = 0、他の無限
2.ノード間距離Sとその数を格納ポイントの構造
3.q.push((ノード){0、S})。
スキップが訪問、または訪問先としては、dをマークした場合、最初のチームU(現在からの最も近い点)を削除4 [U]は推定値から決意値となります
列挙及びv uが接続され、Uは短い輸送経路更新D [V]、及びq.push((ノード){D [V]、Vを})を得た場合、
6.を繰り返し4,5-ステップキューが空になるまで
 
 
 
vv123コード仕様:
1.括弧は折り返されません。
2.インデントには2つの空間は、
3.ライン内のスペースを再生されません
例えばUとして4.短い変数名、V、W、D、同じ行に書かれた変数名、ビット配列のサイズはLG(サイズ)であります
二百二十から一空の行との間の構造、機能、それはあまりにも空行がある場合、コード機能の同量
6.一貫して使用するIOS :: sync_with_stdio(偽)とCIN / COUT
 
 
1の#include <ビット/ STDC ++ H>
 2  使用して 名前空間STDを、
3  INT N、M、S、U、V、W、ヘッド[ 100005 ]、D [ 100005 ]、CNT。
4  BOOL VIS [ 100005 ]。
5  
6  構造体のエッジ{
 7      int型V、W、次。
8 } E [ 500005 ]。
9  
10  構造体ノード{
 11      INT POS、W。
12      ブール 演算子 <(constのノード&X)のconst {
 13        リターン XW <ワット;
14      }
 15  }。
16  
17  空隙追加(INT U、INT V、INT W){
 18      E [++ CNT] .V = V。
19      E [CNT] .W = W。
20      E [CNT] .next = 頭部[U]。
21      頭[U] = CNT。
22  }
 23  
24  空隙ダイクストラ(){
 25      [S] = D 0 26      PRIORITY_QUEUE <ノード> Q。
27      q.push((ノード){ 0 、S})。
28      
29      しばらく(!{q.empty())
 30          ノードT = q.top(); q.pop()。
31          INT U = t.pos、W = TW。
32          であれば(VIS [U])続けます33          VIS [U] = 34          
35          のためにINTは iはヘッド= [U]; I;私は= E [I] .next){
 36              のint V = E [I] .V。
37              であれば(dは[V]> D [U] + E [I] .W){
 38                  D [V] = D [U] + E [I] .W。
39                  であれば(!q.push((ノード){D [V]、V})VIS [V])。
40              }
 41         }
 42    }
 43  }
 44  
45  int型のmain(){
 46の      IOS :: sync_with_stdio()。
47      のmemset(D、127はsizeof (d)参照)。
48      CIN >> N >> M >> S。
49      のためにINT iは= 1 ; I <= M; I ++ ){
 50          CIN >> U >> V >> W。
51          追加(U、V、W)。
52      }
 53      ダイクストラ()。
54      のためにINT iは= 1 ; iが<= N; I ++ 55        COUT << D [i]は<< "  " 56 }
コードの表示

 

おすすめ

転載: www.cnblogs.com/vv123/p/12339792.html