100 atcoder#ABC051D. [ABC051D] Candidates of No Shortest Paths

[ABC051D] Candidates of No Shortest Paths

配点 : 400400

問題文

自己ループと二重辺を含まない NN 頂点 MM 辺の重み付き無向連結グラフが与えられます。 i(1iM)i (1 \leq i \leq M) 番目の辺は頂点 aia_i と頂点 bib_i を距離 cic_i で結びます。 ここで、自己ループは ai=bi(1iM)a_i = b_i (1 \leq i \leq M) となる辺のことを表します。 また、二重辺は (ai,bi)=(aj,bj)(a_i,b_i)=(a_j,b_j) または $(a_i,b_i)=(b_j,a_j) (1 \leq i となる辺のことを表します。 連結グラフは、どの異なる 22 頂点間にも経路が存在するグラフのことを表します。
どの異なる 22 頂点間の、どの最短経路にも含まれない辺の数を求めてください。

制約

  • 2N1002 \leq N \leq 100
  • N1Mmin(N(N1)/2,1000)N-1 \leq M \leq min(N(N-1)/2,1000)
  • 1ai,biN1 \leq a_i,b_i \leq N
  • 1ci10001 \leq c_i \leq 1000
  • cic_i は整数である。
  • 与えられるグラフは自己ループと二重辺を含まない。
  • 与えられるグラフは連結である。

入力

入力は以下の形式で標準入力から与えられる。

NN MM

a1a_1 b1b_1 c1c_1

a2a_2 b2b_2 c2c_2

::

aMa_M bMb_M cMc_M

出力

グラフ上の、どの異なる 22 頂点間の、どの最短経路にも含まれない辺の数を出力せよ。

3 3
1 2 1
1 3 1
2 3 3
1

この入力例で与えられるグラフにおける、全ての異なる 22 頂点間の最短経路は以下の通りです。

  • 頂点 11 から頂点 22 への最短経路は、頂点 11 → 頂点 22 で経路長は 11
  • 頂点 11 から頂点 33 への最短経路は、頂点 11 → 頂点 33 で経路長は 11
  • 頂点 22 から頂点 11 への最短経路は、頂点 22 → 頂点 11 で経路長は 11
  • 頂点 22 から頂点 33 への最短経路は、頂点 22 → 頂点 11 → 頂点 33 で経路長は 22
  • 頂点 33 から頂点 11 への最短経路は、頂点 33 → 頂点 11 で経路長は 11
  • 頂点 33 から頂点 22 への最短経路は、頂点 33 → 頂点 11 → 頂点 22 で経路長は 22

したがって、一度も最短経路として使用されていない辺は、頂点 22 と頂点 33 を結ぶ長さ 33 の辺のみであるため、11 を出力します。

3 2
1 2 1
2 3 1
0

全ての辺が異なる 22 頂点間のある最短経路で使用されます。