最短路上的統計

2021-08-17 03:13:53 字數 948 閱讀 2968

乙個無向圖上,沒有自環,所有邊的權值均為1,對於乙個點對(a,b),我們要把所有a與b之間所有最短路上的點的總個數輸出。

第一行n,m,表示n個點,m條邊

接下來m行,每行兩個數a,b,表示a,b之間有條邊

在下來乙個數p,表示問題的個數

接下來p行,每行兩個數a,b,表示詢問a,b

對於每個詢問,輸出乙個數c,表示a,b之間最短路上點的總個數

5 6

1 2

1 3

2 3

2 4

3 5

4 5

3 2 5

5 1

2 4

sample output

4 3

2範圍:n<=100,p<=5000

這題用floyd。

先處理出每條最短路。

and then,對於每次詢問,就列舉k。

如果f[i][j]=f[i][k]+f[k][j]

即這條路有第二種最短走法,則ans++。

#include

#include

#include

using

namespace

std;

int f[111][111],n,m,p;

int work(int x,int y)

int main()

for(int k=1; k<=n; k++)

for(int i=1; i<=n; i++)

for(int j=1; j<=n; j++)

if(i!=j&&j!=k&&i!=k)

f[i][j]=min(f[i][j],f[i][k]+f[k][j]);

scanf("%d",&p);

for(int i=1; i<=p; i++)

}

最短路上的統計 Floyd

description 乙個無向圖上,沒有自環,所有邊的權值均為1,對於乙個點對 a,b 我們要把所有a與b之間所有最短路上的點的總個數輸出。input 第一行n,m,表示n個點,m條邊 接下來m行,每行兩個數a,b,表示a,b之間有條邊 在下來乙個數p,表示問題的個數 接下來p行,每行兩個數a,b...

最短路上的統計 Floyed

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 對於每個詢問,輸出...