P1144 最短路計數

2021-10-24 17:05:02 字數 920 閱讀 6878

題目鏈結

題意:就是在無邊權無向圖裡面求從1點出發到其他點的最短距離有多少種走法(注意要對給定數字取模),有可能有重邊,注意自環。

**如下:

#include

using

namespace std;

#define inf 0x3f3f3f3f

#define maxn 1000005

#define maxm 2000005

int n, m, cnt, head[maxn]

, dis[maxn]

, num[maxn]

;bool vis[maxn]

;inline

intread()

while

(ch >=

'0'&& ch <=

'9')

s = s *

10+ ch -

'0', ch =

getchar()

;return s * w;

}struct edge e[maxm]

;void

add(

int u,

int v,

int w)

void

spfa()

}else

if(dis[v]

== dis[u]

+ w)}}

}int

main()

spfa()

;for

(int i =

1; i <= n;

++i)

return0;

}

題解:就是找最短路徑順便記一下數字,主要問題出在計數的方面(因為這裡我debug了好久……)。簡單來說就是a點如果能去到b點,那麼b點的最短路徑數量應該加上a點本身的最短路徑數量。

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的邊,請注意可能有自環與重邊。輸出格式 輸出包括n行,每行乙個非負整數,第i行輸...

P1144 最短路計數

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