羅区P2384最短

ああ...

 

トピックリンクします。https://www.luogu.org/problem/P2384

 

この質問は非常に水である、ログの首長が、その後どの乗っ0以来、1への最短セットの出発点に注意を払う、%%礼拝は、実際には、ここでは簡単なダイクストラで、積和演算の変更操作を表明して行うには番号は0を持っていました...」

 

ACコード:

1の#include <cstdioを>
 2の#include <iostreamの>
 3  
4  使用して 名前空間STDを、
5  のconst  int型 INF = 0x3f3f 6  INTの N、M、ヘッド[ 1000005 ]、VIS [ 1000005 ]、CNT、DIS [ 1000005 ]。
7  構造体ノード{
 8      INT  から、に、次の、ヴァル。
9 } G [ 1000005 ]。
10  
11インラインボイド追加(int型 U、int型 V、INT W){
12      G [++ CNT]。= U;
13      G [CNT] .TO = V。
14      G [CNT] .next = 頭部[U]。
15      頭[U] = CNT。
16      G [CNT] .val = W。
17 }
 18 19インラインボイドダイクストラ(INT X){
 20 のためのint型 I = 1 ; I <= N; iは++)DIS [I] =(Iの== 11:INF)。// 注意起点21 のためのint型 i = 1 ; iが<= N; I ++  
     
     ){
 22          のint = T 0、Y = INF。
23          のためのint型 J = 1 ; J <= N; J ++)場合(VIS [J] && DIS [J] <= Y!)Y = DIS [T = J]。
24          VIS [T] = 1 25          のためにINT DIS [G [J] .TO] =分(DIS [G [J] .TO]、DIS [T] *; J J = G [J] .next J =頭部[T])G [J] .val)。
26      }
 27      のprintf(" %dの"、DIS [n]は%9987 )。
28      リターン;
29  }
 30  
31 INT メイン(){
 32      のint X、Y、Z。
33      のscanf(" %D%dの"、&​​N、&M)。
34      のためにint型 I = 1 {scanf関数(; I <= M I ++)は、 " %D%D%D "、およびX&Y、およびZ)。(x、y、z)を追加;}
 35の      ダイクストラ(1 )。
36      リターン 0 37 }
ACコード

 

 

"

おすすめ

転載: www.cnblogs.com/New-ljx/p/11258096.html