洛谷 P1144 最短路計數

2021-07-22 15:36:28 字數 1255 閱讀 8131

題目描述

給出乙個n個頂點m條邊的無向無權圖,頂點編號為1~n。問從頂點1開始,到其他每個點的最短路有幾條。

輸入輸出格式

輸入格式:

輸入第一行包含2個正整數n,m,為圖的頂點數與邊數。

接下來m行,每行兩個正整數x, y,表示有一條頂點x連向頂點y的邊,請注意可能有自環與重邊。

輸出格式:

輸出包括n行,每行乙個非負整數,第i行輸出從頂點1到頂點i有多少條不同的最短路,由於答案有可能會很大,你只需要輸出mod 100003後的結果即可。如果無法到達頂點i則輸出0。

輸入輸出樣例

輸入樣例#1:

5 7

1 2

1 3

2 4

3 4

2 3

4 5

4 5輸出樣例#1:

1 1

1 2 4說明

1到5的最短路有4條,分別為2條1-2-4-5和2條1-3-4-5(由於4-5的邊有2條)。

對於20%的資料,n ≤ 100;

對於60%的資料,n ≤ 1000;

對於100%的資料,n ≤ 100000,m ≤ 200000。

【分析】

小水題,spfa寬搜解決。

【**】

//洛谷 p1144 最短路計數 

#include

#include

#include

#include

#include

#define fo(i,j,k) for(i=j;i<=k;i++)

#define m(a) memset(a,0,sizeof a)

using namespace std;

vector f[100001];

intq[100001],ans[100001],c[100001];

bool vis[100001];

int main()

int h=0,t=1;

q[1]=ans[1]=c[1]=1;

while(hq[++h];

x=f[u].size()-1;

fo(i,0,x)

else

if(c[v]==c[u]+1)

ans[v]=(ans[v]+ans[u])%100003;}}

fo(i,1,n) printf("%d\n",ans[i]%100003);

return

0;}

洛谷 P1144 最短路計數

給出乙個nn個頂點mm條邊的無向無權圖,頂點編號為1 n1 n。問從頂點11開始,到其他每個點的最短路有幾條。輸入格式 第一行包含22個正整數n,mn,m,為圖的頂點數與邊數。接下來mm行,每行22個正整數x,yx,y,表示有一條頂點xx連向頂點yy的邊,請注意可能有自環與重邊。輸出格式 共nn行,...

洛谷 P1144 最短路計數

給出乙個nn個頂點mm條邊的無向無權圖,頂點編號為1 n1 n。問從頂點11開始,到其他每個點的最短路有幾條。第一行包含22個正整數n,mn,m,為圖的頂點數與邊數。接下來mm行,每行22個正整數x,yx,y,表示有一條頂點xx連向頂點yy的邊,請注意可能有自環與重邊。共nn行,每行乙個非負整數,第...

洛谷P1144 最短路計數

題目提供者該使用者不存在 標籤圖論 難度普及 提高 提交該題 討論 題解 記錄 給出乙個n個頂點m條邊的無向無權圖,頂點編號為1 n。問從頂點1開始,到其他每個點的最短路有幾條。輸入格式 輸入第一行包含2個正整數n,m,為圖的頂點數與邊數。接下來m行,每行兩個正整數x,y,表示有一條頂點x連向頂點y...