最短カウントP1144-

1つの#include <ビット/ STDC ++ H>
 2  の#define PBの一back
 3  の#defineため_for(iは、B)(INT I =(A); iが++; iが(B)<)
 4  の#define INF十億三を
 5  の#defineは長い長いっ
 6  
7  使って 名前空間STDを、
8  
9  のconst  int型 MAXN = 2000003 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  V LL、E、B、
 33は 
34であるのtypedef対<LL、LL> P; // まず第頂点番号、最短距離であり、
35は 、LL D [MAXN]
 36  LL T [MAXN];
 37 [  LL ANS [MAXN]。
 38  ボイド shortest_path(int型S)
 39  {
 40      PRIORITY_QUEUE <P、ベクトル<P>、大きな<P >> QUE。
41      
42      _for(I、1、V + 1 43          D [I] = INF。
44      D [S] = 0 ;
45の      ANS [S] = 1 46      que.push(P { 0 、S})。
47  
48      ながら(!que.empty())
 49      {
 50          P、P = que.top(); que.pop()。
51          のint = V p.second。
52          もし(D [V] <p.first)続けます53  
54          _for(I、0 、G [V] .size())
 55          {
 56              エッジe = G [V] [I]。
57              であれば(D [e.to]> D [V] + e.cost)
 58              {
 59                  D [e.to] = D [V] + e.cost。
60                  que.push(P {D [e.to]、e.to})。
61              }
 62              であれば(D [e.to] == D [V] + e.cost)
 63              {
 64                  ANS [e.to] + = ANS [V]。
65の                  ANS [e.to]%=100003 ;
66              }
 67          }
 68      }
 69  }
 70  
71  のint main()の
 72  {
 73      V =読み取る()、Eは= リード()。
74  
75      _for(I、0 、E)
 76      {
 77          のLL S、T、C。
78          のS =)は(読み取り、TはC =)(読み取り= 1 79          //   のscanf( "%D%D%D"、&S、&T&C)。
80          G [S] .push_back(エッジ{T、C})。
81          G [t]は.push_back(エッジ{S、C})。
82      }
 83     shortest_path(1 )。
84      _for(I、1、V + 1 85          のprintf(" %d個の\ n " 、ANS [I])。
86      リターン 0 ;
87 }

 

おすすめ

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