乙個無向圖上,沒有自環,所有邊的權值均為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 對於每個詢問,輸出...