**:
給出乙個$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行,每...