P1144 最短路計數

2021-09-07 12:23:34 字數 1567 閱讀 7013

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

輸入格式:

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

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

輸出格式:

輸出包括n行,每行乙個非負整數,第i行輸出從頂點1到頂點i有多少條不同的最短路,由於答案有可能會很大,你只需要輸出mod 100003後的結果即可。如果無法到達頂點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和2條1-3-4-5(由於4-5的邊有2條)。

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

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

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

迪傑斯特拉有毒啊,,,

卡了我好長時間。。。。

就是乙個裸的最短路問題

啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

1 #include2 #include3 #include4 #include5 #include6

using

namespace

std;

7void read(int &n)

816 n=x;17}

18const

int maxn=1000401;19

const

int maxn=0x7fffff;20

inttot[maxn];

21struct

node

22edge[maxn*4

];25

inthead[maxn];

26int num=1;27

intn,m;

28int

dis[maxn];

29int

vis[maxn];

30struct

dian

31a[maxn];

35void add(int x,int

y)36

43bool

operator

<(dian a,dian b)

44void

dj()

4568

if(dis[will]>dis[p.bh]+edge[i].w)

6980}81

}82}83

84}85int

main()

8696

dj();

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

98 printf("

%d\n

",tot[i]);

99return0;

100 }

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行,每行2個正整數x,y,表示有一條頂點x連向頂點y的邊,請注意可能有自環與重邊。共n行,每行乙個非負整數,第ii行輸出從...