luoguP1951有料増加_NOIガイド2009(2)

1つの#include <ビット/ STDC ++ H>
 2  の#define INF 2147483647
 3  使用して 名前空間STDを、
4  int型 N、M、U、V、S、F [ 10005 ]、E [ 10005 ]、ヘッド[ 1000500 ]、D [ 10005 ]、ANS、TOT、L、R。
5  ボイド入力(){
 6      freopenは(" INPUT.TXT "" R " 、STDIN)。
7      // freopenは( "output.txtと"、 "W"、STDOUT); 
8  }
 9  構造体A {
 10      int型V、W、次。
11 }のLU [ 1000500 ]。
12  ボイド追加(int型のx、int型の Y、int型Z){
 13      のLU [++ TOT] .V = Y。
14      LU [TOT] .W = Z。
15      LU [TOT] .next = 頭部[X]。
16      頭[X] = TOT。
17  }
 18  空隙リード(){
 19      int型A、B、C。
20      のscanf(" %D%D%D%D%D "、&​​N、&M、およびU、およびV&S)。
21      のためにINT I = 1; I <= N。I ++ ){
 22          のscanf(" %dの"、&F [I])。
23          E [I] = Fを[I]。
24      }
 25      ソート(E + 1、E +はN + 1 )。
26      のためにint型 I = 1を iが++; I <= M {)
 27          のscanf(" %D%D%D "、&​​、&B、&C)。
28          追加(A、B、C)。
29          追加(B、C)。
30      }
 31  }
 32両端キュー< INT> Q;
33  ブール spfa(長い 長いミネソタ州){
 34      のためのint型 I = 0 ; iが<= N; iが++)D [I] = INF。
35      q.push_back(U)。
36      Dは、[U] = 0 37      一方(q.size()){
 38          INT今= q.front()。
39          q.pop_front()。
40          であれば(> [今] F ミネソタ州)
 41              続けます42          のためにint型 I =ヘッド[今]; Iを、I = LUの[I] .next){
 43             もし(F [LUの[I] .V]> ミネソタ州)
 44                  続けます45              であれば(D [LUの[I] .V]> D [今] + LUの[I] .W){
 46                  D [用のLU [i]は.V] = D [今] + LU [I] .W。
47                  であれば(q.size()&& <D [i]は.V LUの[] D [q.front()])
 48                      q.push_front(LUの[I] .V)。
49                  
50                      q.push_back(LU [i]は.V)。
51              }
 52          }
 53      }
 54      リターン D [V] <=のS。
55  }
 56  空隙ワーク(){
 57     int型、L = 1、R = N。
58      一方(L <= R){
 59          のint J =(L + R)>> 1 60          であれば(spfa(E [J])){
 61の              ANS = E [J]。
62              R = J - 1 63          } そうでなければ
64              、L = J + 1 65      }
 66      であれば(ANS == 0 67          のprintf(" -1の\ n " );
68      
69         printf(" %d個の\ n " 、ANS)。
70  }
 71  INT メイン(){ 
 72   // 入力()。
73      リード()。
74      ワーク()。
75      リターン 0 ;
76 }
コードの表示

 

おすすめ

転載: www.cnblogs.com/Achensy/p/11008796.html