P1339- [USACO09OCT】熱波熱波

1つの#include <ビット/ STDC ++ H>
 2  の#define PBの一back
 3  の#defineため_for(iは、B)(; iは<(B)は、i ++は、I =(A)INT)
 4  の#define INF INT_MAX
 5  の#defineは長い長いっ
 6  
7  使って 名前空間STDを、
8  
9  のconst  int型 MAXN = 500003 10  インラインLLリード()
 11  {
 12      のLLのANS = 0 13      チャー CH = GETCHAR()、=最後'  ' 14      しばらく(!isdigit(CH))最後の= CH、CH = getchar関数();
15      一方(isdigit(CH))ANS =(ANS << 1)+(ANS << 3)+ CH - ' 0 '、CH = GETCHAR()。
16      であれば(最後== ' - ')ANS = - ANS。
17の     リターンANS;
18  }
 19インラインボイドライト(LLのX)
 20  {
 21の     場合(X < 0)は、x = -x、のputchar(' - ' )。
22      であれば(X> = 10)、書き込み(X / 10 )。
23      のputchar(Xの%10 + ' 0 ' )。
24  }
 25  構造体端部
 26  {
 27      LLに、
28      LLコスト;
29  }。
30ベクター<エッジ> G [MAXN]。
31  
32  LLのV、E。
33  
34のtypedef対<-1,11,11-> P。// 最初の是最短距离、第是顶点编号
35  LL D [MAXN]。
36  ボイドshortest_path(LL秒)
 37  {
 38      PRIORITY_QUEUE <P、ベクトル<P>、大きな<P >>QUE;
39      
40      _for(I、1、V + 1 41          D [I] = INF。
42      D [S] = 0 ;
43      que.push(P { 0 、S})。
44  
45      ながら(!que.empty())
 46      {
 47          P、P = que.top(); que.pop()。
48          LLのV = p.second。
49          であれば(D〔V〕<p.first)続けます50          _for(I、0 、G [V] .size())
 51          {
 52             エッジe = G [V] [I]。
53              であれば(D [e.to]> D [V] + e.cost)
 54              {
 55                  D [e.to] = D [V] + e.cost。
56                  que.push(P {D [e.to]、e.to})。
57              }
 58          }
 59      }
 60  }
 61  
62  のint main()の
 63  {
 64      番目、ED LL。
65      V =読み取る()、E =リード()、STは= read()は、ED = 読み取ります();
66  //     のscanf( "%D%D%D"、&V、&E、&ST)。
67      _for(I、0 、E)
68      {
 69          のLL S、T、C。
70個の          S =)は、Tが読み取ら=()(読み取り、= C )(読み取ります。
71          //   のscanf( "%D%D%D"、&S、&T&C)。
72          G [S] .push_back(エッジ{T、C})。
73           G [t]は.push_back(エッジ{S、C})。
74      }
 75      shortest_path(ST)。
76      ライト(D [ED])。
77      // のprintf( "%dの"、D [I])。
78      リターン 0 79 }

 

おすすめ

転載: www.cnblogs.com/Asurudo/p/11516823.html