イクタ君は、無向グラフについて異常なほどの思い入れを持っている。イクタ君は、無向グラフ G とその 2 点 s,tの組(G,s,t)のうち、その「うつくしさ」が大きいものが好きである。 組(G,s,t)の「うつくしさ」とは、辺 e=u,v (u と v は G の異なる 2 点) で、Gにおけるsからtへの最短路の長さが、Gにeをつけくわえた無向グラフにおけるsからtへの最短路の長さより 1 だけ大きいものの個数である。
あなたの仕事は、組(G,s,t)が与えられたとき、その「うつくしさ」を求めるプログラムを書くことである。
入力は以下の形式で与えられる。
N M s t
x_1 y_1
...
x_i y_i
...
x_M y_M
最初に無向グラフの頂点数、辺数、2つの頂点を表す整数N,M,s,tが入力される。 2行目からM+1行目までは辺によって結ばれている2つの頂点が入力される。 (ただし、G の頂点集合を1,...,Nとする。)
与えられたグラフをGとしたとき、組(G,s,t)の「うつくしさ」を1行で出力せよ。
入力中の各変数は以下の制約を満たす。
2≤N≤100,000
1≤M≤300,000
1≤s,t,x_i,y_i≤N
s と t とは異なる
s から t に辿り着けることは保証されている