兔兔 的 題解 最短路計數

2021-10-08 18:05:30 字數 2650 閱讀 1435

題目描述

給出乙個 n

nn 個頂點 m

mm 條邊的無向無權圖,頂點編號為 1

11 ~ nnn。

問從頂點 1

11 開始,到其他每個點的最短路有幾條。

輸入格式

第一行包含 2

22 個正整數 n,m

n, m

n,m,為圖的頂點數與邊數。

接下來 m

mm 行,每行兩個正整數 x,y

x, y

x,y,表示有一條頂點 x

xx 連向頂點 y

yy 的邊,請注意可能有自環與重邊。

輸出格式

輸出 n

nn 行,每行乙個非負整數,第 i

ii 行輸出從頂點 1

11 到頂點 i

ii 有多少條不同的最短路,由於答案有可能會很大,你只需要輸出 mod

modmo

d100003

100003

100003

後的結果即可。如果無法到達頂點 i

ii 則輸出 000。

樣例

樣例輸入

5 71 2

1 32 4

3 42 3

4 54 5

樣例輸出11

124樣例解釋

1

11 到 5

55 的最短路有 4

44 條,分別為 2

22 條 1

−>2−

>4−

>

51->2->4->5

1−>2−

>4−

>

5 和 2

22 條 1

−>3−

>4−

>

51->3->4->5

1−>3−

>4−

>

5 (由於 4

−>

54->5

4−>

5 的邊有2條) 。

資料範圍與提示

對於 20

2020

% 的資料, n

≤100

n ≤ 100

n≤100;

對於 60

6060

% 的資料, n

≤1000

n ≤ 1000

n≤1000

;對於 100

10010

0% 的資料, n

≤100000,0

≤m

≤200000

n ≤ 100000, 0 ≤ m ≤ 200000

n≤1000

00,0

≤m≤2

0000

0。

這道題是道最短路,只是需要求的不再是最短路徑了,而是求從 1

11 到每個點有多少條最短路徑。

我們可以用 dis

[i

]dis[i]

dis[i]

來儲存 1

11 ~ i

ii 的最短路,用 pre

[i][

j]

pre[i][j]

pre[i]

[j] 來儲存第 i

ii 個點的第 j

jj 個字首。

用 dijkstra 來求出最短路,在求最短路的時候就可以把字首求出來了。

最後把每個點的字首的答案全部加起來就是這個點的答案了。(可能有點繞,看**可能容易理解些~)

正解**如下:

#include

#include

#include

#include

using

namespace std;

const

int inf =

0x3f3f3f3f

;const

int mod =

100003

;const

int maxn =

1e5+5;

int n, m, s, t;

struct edge

edge

(int v,

int w)

friend

bool

operator

<

(edge a, edge b)};

vector<

int> g[maxn]

, pre[maxn]

;int dis[maxn]

, dp[maxn]

;bool vis[maxn]

;void

addedge

(int s,

int t)

void

dijkstra

(int s)}}

}int

dfs(

int n)

intmain()

dijkstra(1

);for(

int i =

1; i <= n; i++

)return0;

}

兔兔 的 題解 Teamwork

區間最值 題目背景 在 f ar me rfarmer farmer j oh njohn john 最喜歡的節日裡,他想要給他的朋友們贈送一些禮物。由於他並不擅長包裝禮物,他想要獲得他的奶牛們的幫助。你可能能夠想到,奶牛們也不是很擅長包裝禮物,而 far me rfarmer farmer j o...

兔兔 的 題解 噴水裝置

題目描述 在乙個長 l ll 公尺,寬 w ww 公尺的草坪裡裝有 n nn 個澆灌噴頭。每個噴頭都裝在草坪中心線上 離兩邊各 w 2 frac w 2 2w 公尺 我們知道每個噴頭的位置 c cc 離草坪中心線左端的距離 以及它能覆蓋到的澆灌範圍 rrr。請問 最少需要開啟多少個噴頭才能澆灌整塊草...

兔兔 的 題解 拆分自然數

題目描述 任何乙個大於 1 11 的自然數 n n 45 n n 45 n n 45 總可以拆分成若干個小於 n nn 的自然數之和。輸入格式 輸入只有 1 11 行,包含 1 11 個整數 n nn 表示需要拆分的數字。輸出格式 對於輸入的 n nn 輸出所有的拆分方法 字典 序小的先 輸出 字典...