洛谷 P1144 最短路計數

2021-09-17 21:29:56 字數 1984 閱讀 3347

給出乙個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 21 3

2 43 4

2 34 5

4 5

輸出樣例#1:複製

111

24

11到55的最短路有44條,分別為22條1-2-4-51−2−4−5和22條1-3-4-51−3−4−5(由於4-54−5的邊有22條)。

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

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

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

首先可以考慮自環對這個題是沒有影響的,重邊是有的 , 稍微處理一下,因為邊權為1,所以直接bfs,類似spfa標記陣列,第一次出現 入隊,並且記錄計數,後面再出現,不用再入隊,但是要統計當前結果對答案做的貢獻,就是當v到u的時候,dis[v] + 1 == dis[u]

#include #include #define fi first

#define se second

#define endll "\n"

#define ms0(x) memset((x), 0, sizeof((x)))

#define ms1(x) memset((x), -1, sizeof((x)))

#define len(x) strlen(x)

///vector(len,val);

using namespace std;

typedef long long ll;

typedef double db;

int xx[4] = ;

int yy[4] = ;

const double eps = 1e-9;

typedef pairp;

const int maxn = 2e6 + 5000;

const ll mod = 1e9 + 7;

inline int sign(db a)

inline int cmp(db a,db b)

void debug(int x)

ll mul(ll a,ll b,ll c) return res;}

ll phi(ll x) if(x > 1) res = res / x * (x - 1); return res;}

int fa[maxn];

int find(int x)

ll c,n,k; ll dis[maxn];

bool vis[maxn];

const ll modd = 100003;

ll ans[maxn];

vectorv[maxn];

void bfs()

}else}}

return ;

}int main()

bfs();

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

}cerr << "time: " << (long long)clock() * 1000 / clocks_per_sec << " ms" << 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...