最短路上的統計 Floyed

2021-09-19 08:23:40 字數 1382 閱讀 8443

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