洛谷P1144 最短路計數 BFS

2022-05-02 20:09:13 字數 734 閱讀 7791

**:

給出乙個$n$個頂點$m$條邊的無向無權圖,頂點編號為$1$~$n$。問從頂點$1$開始,到其他每個點的最短路有幾條,可能有自環與重邊。輸出$ans$ $mod100003$後的結果即可。如果無法到達頂點$i$則輸出$0$。

用乙個$cnt$陣列記錄$1$點到達某個點的最短路徑的條數,如果在某個時候已經求出$u$的深度,如果訪問的點是$v$且$v$的深度等於$u$的深度$+1$,則可知這條$u$至$v$的邊在$1$到$v$的最短路徑上,所以$cnt[v]=cnt[v]+cnt[u]$; 由加法原理可知,如果有重邊,累加$cnt[u]$即可。求解使用$bfs$即可。(如果是帶權圖,則在鬆弛的時候進行更新即可)。

ac**:

#include #include #include #include using namespace std;

int dep[1000005], vis[1000005], cnt[1000005];

vectoredge[1000005];

void bfs(int n)

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

cnt[v] = (cnt[v] + cnt[u]) % 100003;

} }for (int i = 1; i <= n; ++i)

cout << cnt[i] << endl;

}int main()

} bfs(n);

return 0;

}

洛谷P1144 最短路計數(BFS)

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

洛谷P1144 最短路計數(bfs)

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

洛谷 P1144 最短路計數

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