洛谷P1144 最短路計數(bfs)

2021-09-25 03:44:50 字數 1108 閱讀 3817

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

輸入格式:

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

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

輸出格式:

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

輸入樣例#1:複製

5 7

1 21 3

2 43 4

2 34 5

4 5

輸出樣例#1:複製

111

24

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

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

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

對於100%的資料,n<=1000000,m<=2000000;

遍歷所有的邊,如果該點還未被訪問,證明是一條最短路,儲存下最短路徑,如果已經被訪問且路徑的長度等於最短路徑,證明這是另一條最短路。

#include #include #include #include #define n 1000020

using namespace std;

vectore[n];

queueq;

int book[n], dis[n], ans[n];

int main()

q.push(1);

book[1]=1;

ans[1]=1;

while(!q.empty())

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

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

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

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

} 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 開始,到其他每個點的最短路有幾條,可能有自環與重邊。輸出 ans mod100003 後的結果即可。如果無法到達頂點 i 則輸出 0 用乙個 cnt 陣列記錄 1 點到達某個點的最短路徑的條數,如果在某個時候已經求出 u ...

洛谷 P1144 最短路計數

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