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條公路的長度,公...