>description
乙個無向圖上,沒有自環,所有邊的權值均為1,對於乙個點對(a,b),我們要把所有a與b之間所有最短路上的點的總個數輸出。
>input
第一行n,m,表示n個點,m條邊
接下來m行,每行兩個數a,b,表示a,b之間有條邊
在下來乙個數p,表示問題的個數
接下來p行,每行兩個數a,b,表示詢問a,b
>output
對於每個詢問,輸出乙個數c,表示a,b之間最短路上點的總個數
>sample input
5 61 2
1 32 3
2 43 5
4 53
2 55 1
2 4>sample output43
2範圍:n<=100,p<=5000
>解題思路
先用floyed求出每個點到每個點的最短路,然後再用乙個floyed列舉中間點,計算最短路路徑。
>**
#include
#include
#include
using namespace std;
int a[
105]
[105
],ans[
105]
[105
],n,m,x,y;
int main()
for(int k=
1;k<=n;k++
)for
(int i=
1;i<=n;i++
)for
(int j=
1;j<=n;j++
) a[i]
[j]=
min(a[i]
[j],a[i]
[k]+a[k]
[j])
;//求最短路
for(int k=
1;k<=n;k++
)for
(int i=
1;i<=n;i++
)for
(int j=
1;j<=n;j++)if
(a[i]
[k]+a[k]
[j]==a[i]
[j]) ans[i]
[j]++
;//ans累計路徑
scanf
("%d"
,&m)
;for
(int i=
1;i<=m;i++
)return0;
}
最短路上的統計
乙個無向圖上,沒有自環,所有邊的權值均為1,對於乙個點對 a,b 我們要把所有a與b之間所有最短路上的點的總個數輸出。第一行n,m,表示n個點,m條邊 接下來m行,每行兩個數a,b,表示a,b之間有條邊 在下來乙個數p,表示問題的個數 接下來p行,每行兩個數a,b,表示詢問a,b 對於每個詢問,輸出...
最短路上的統計 Floyd
description 乙個無向圖上,沒有自環,所有邊的權值均為1,對於乙個點對 a,b 我們要把所有a與b之間所有最短路上的點的總個數輸出。input 第一行n,m,表示n個點,m條邊 接下來m行,每行兩個數a,b,表示a,b之間有條邊 在下來乙個數p,表示問題的個數 接下來p行,每行兩個數a,b...
Vijos 最短路上的統計 Floyd
乙個無向圖上,沒有自環,所有邊的權值均為1,對於乙個點對 a,b 我們要把所有a與b之間所有最短路上的點的總個數輸出。第一行n,m,表示n個點,m條邊 接下來m行,每行兩個數a,b,表示a,b之間有條邊 在下來乙個數p,表示問題的個數 接下來p行,每行兩個數a,b,表示詢問a,b 對於每個詢問,輸出...