洛谷P1119 災後重建 最短路

2022-09-03 05:09:07 字數 1220 閱讀 9316

bb

地區在**過後,所有村莊都造成了一定的損毀,而這場**卻沒對公路造成什麼影響。但是在村莊重建好之前,所有與未重建完成的村莊的公路均無法通車。換句話說,只有連線著兩個重建完成的村莊的公路才能通車,只能到達重建完成的村莊。

給出b地區的村莊數n,村莊編號從00到n

−1n−

1,和所有m

m條公路的長度,公路是雙向的。並給出第i

i個村莊重建完成的時間t[i

]t[i

],你可以認為是同時開始重建並在第t[i

]t[i

]天重建完成,並且在當天即可通車。若t[i

]t[i

]為00則說明**未對此地區造成損壞,一開始就可以通車。之後有q

q個詢問(x,

y,t)

(x,y

,t),對於每個詢問你要回答在第t

t天,從村莊x

x到村莊y

y的最短路徑長度為多少。如果無法找到從x

x村莊到y

y村莊的路徑,經過若干個已重建完成的村莊,或者村莊x

x或村莊y

y在第t

t天仍未重建完成 ,則需要返回−1−

1。fl

oydf

loyd

的用處真是太神了orzkk

表示列舉可以在限定時間範圍內的修通路的點。由於保證了時間遞增,直接每次k++

k++即可。

然後就可以把時間壓縮到o(n

3+q)

o(n3

+q)

#include

#include

#define n 210

using

namespace std;

int n,m,tim[n]

,dis[n]

[n],t,x,y,z,k;

intmain()

scanf

("%d"

,&t)

;while

(t--)if

(dis[x]

[y]<

0x3f3f3f3f

&&tim[x]

<=z&&tim[y]

<=z)

printf

("%d\n"

,dis[x]

[y])

;else

printf

("-1\n");

}return0;

}

洛谷P1119 災後重建(最短路)

b地區在 過後,所有村莊都造成了一定的損毀,而這場 卻沒對公路造成什麼影響。但是在村莊重建好之前,所有與未重建完成的村莊的公路均無法通車。換句話說,只有連線著兩個重建完成的村莊的公路才能通車,只能到達重建完成的村莊。給出b地區的村莊數n,村莊編號從0到n 1,和所有m條公路的長度,公路是雙向的。並給...

洛谷P1119 災後重建(最短路)

b地區在 過後,所有村莊都造成了一定的損毀,而這場 卻沒對公路造成什麼影響。但是在村莊重建好之前,所有與未重建完成的村莊的公路均無法通車。換句話說,只有連線著兩個重建完成的村莊的公路才能通車,只能到達重建完成的村莊。給出b地區的村莊數n,村莊編號從0到n 1,和所有m條公路的長度,公路是雙向的。並給...

洛谷P1119 災後重建 最短路

bb 地區在 過後,所有村莊都造成了一定的損毀,而這場 卻沒對公路造成什麼影響。但是在村莊重建好之前,所有與未重建完成的村莊的公路均無法通車。換句話說,只有連線著兩個重建完成的村莊的公路才能通車,只能到達重建完成的村莊。給出b地區的村莊數n,村莊編號從00到n 1n 1,和所有m m條公路的長度,公...