給出乙個nn個頂點mm條邊的無向無權圖,頂點編號為1-n1−n。問從頂點11開始,到其他每個點的最短路有幾條。
第一行包含22個正整數n,mn,m,為圖的頂點數與邊數。
接下來mm行,每行22個正整數x,yx,y,表示有一條頂點xx連向頂點yy的邊,請注意可能有自環與重邊。
共nn行,每行乙個非負整數,第ii行輸出從頂點11到頂點ii有多少條不同的最短路,由於答案有可能會很大,你只需要輸出ans \bmod 100003ansmod100003後的結果即可。如果無法到達頂點ii則輸出00。
輸入 #1複製
5 7輸出 #1複製1 21 3
2 43 4
2 34 5
4 5
11111到55的最短路有44條,分別為22條1-2-4-51−2−4−5和22條1-3-4-51−3−4−5(由於4-54−5的邊有22條)。24
對於20\%20%的資料,n ≤ 100n≤100;
對於60\%60%的資料,n ≤ 1000n≤1000;
對於100\%100%的資料,n<=1000000,m<=2000000n<=1000000,m<=2000000。
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include#include //int_maxnn
#define pp pair#define inf 0x3f3f3f3f
#define llinf 0x3f3f3f3f3f3f3f3fll
#define dinf 1000000000000.0
#define pi 3.1415926
//#includetypedef long long ll;
using namespace std;
int n, m, x, y;
int vis[1000010],dis[1000010], jg[1000010];
vectorg[1000010];
queueq;
void spfa(int x)
}else if (dis[v] == dis[u] + 1)
jg[v] = (jg[v] + jg[u]) % 100003;
}vis[u] = 0;
}}int main()
spfa(1);
for (int i = 1; i <= n; i++)
cout << jg[i] << endl;
return 0;
}
洛谷 P1144 最短路計數
題目描述 給出乙個n個頂點m條邊的無向無權圖,頂點編號為1 n。問從頂點1開始,到其他每個點的最短路有幾條。輸入輸出格式 輸入格式 輸入第一行包含2個正整數n,m,為圖的頂點數與邊數。接下來m行,每行兩個正整數x,y,表示有一條頂點x連向頂點y的邊,請注意可能有自環與重邊。輸出格式 輸出包括n行,每...
洛谷 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...