0%

Teleporter(传送门,使用至少0,1,。。。N次传送门的最短路)

思路讲解

注意,不能直接跑分层图,会TLE。

那怎么办呢?可以用传送门,先确定一些种子节点,再跑多源最短路。

一个比较重要的剪枝其实在这里。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
FOR(j, 1, N) {
Dis[i][j] = Dis[i - 1][j];
}
priority_queue < DIS > pq;
FOR(u, 1, N) {
for (auto &v : jie[u]) {
Dis[i][u] = min(Dis[i - 1][v], Dis[i][u]);
}
}
FOR(u, 1, N) {
// 超了,或者和原来一样,就不要了
if (Dis[i][u] != Dis[i - 1][u]) {
pq.push({Dis[i][u], u});
}
}

AC代码

914ms,在dij中算跑的很快的。

https://qoj.ac/submission/1310755

心路历程(WA,TLE,MLE……)