題目鏈結
題意:就是在無邊權無向圖裡面求從1點出發到其他點的最短距離有多少種走法(注意要對給定數字取模),有可能有重邊,注意自環。
**如下:
#include
using
namespace std;
#define inf 0x3f3f3f3f
#define maxn 1000005
#define maxm 2000005
int n, m, cnt, head[maxn]
, dis[maxn]
, num[maxn]
;bool vis[maxn]
;inline
intread()
while
(ch >=
'0'&& ch <=
'9')
s = s *
10+ ch -
'0', ch =
getchar()
;return s * w;
}struct edge e[maxm]
;void
add(
int u,
int v,
int w)
void
spfa()
}else
if(dis[v]
== dis[u]
+ w)}}
}int
main()
spfa()
;for
(int i =
1; i <= n;
++i)
return0;
}
題解:就是找最短路徑順便記一下數字,主要問題出在計數的方面(因為這裡我debug了好久……)。簡單來說就是a點如果能去到b點,那麼b點的最短路徑數量應該加上a點本身的最短路徑數量。 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的邊,請注意可能有自環與重邊。輸出格式 輸出包括n行,每行乙個非負整數,第i行輸...
P1144 最短路計數
給出乙個n個頂點m條邊的無向無權圖,頂點編號為1 n。問從頂點1開始,到其他每個點的最短路有幾條。輸入格式 輸入第一行包含2個正整數n,m,為圖的頂點數與邊數。接下來m行,每行兩個正整數x,y,表示有一條頂點x連向頂點y的邊,請注意可能有自環與重邊。輸出格式 輸出包括n行,每行乙個非負整數,第i行輸...