题解:[NERC2024] Incompetent Delivery Guy
题目大意
给定一张带权有向图向图,设 \(d_x\) 为点 \(x\) 到点 \(n\) 的最短路长度(不存在则为 \(+\infin\))。对于所有点 \(x\) 满足 \(d_x\neq+\infin\),需要选择其一条满足 \(d_x=d_y+w\) 的出边 \((x,y,w)\) 作为“默认出边”。
对于常数 \(k\) 和一种选择默认出边的方案,定义一次从点 \(s\) 开始的游走为从点 \(s\) 开始,每次可以选择当前所在点的默认出边或非默认出边走到下一个点,且要求整个过程中最多选 \(k\) 次非默认出边。如果走到点 \(n\) 则成功,如果走到 \(d\) 为 \(+\infin\) 的点则失败。
现在,要求出最大的自然数 \(k\),使得存在一种选择默认出边的方案,使得在这种方案和这个 \(k\) 的情况下,一次从点 \(1\) 开始的游走中无论怎么选择都能胜利。
如果 \(d_1=+\infin\) 输出 \(-1\),如果 \(k\) 可以任意大则输出 \(n\)。
解法
先求出所有 \(d\)。忽略点 \(n\) 的所有出边。
设 \(f_x\) 为从点 \(x\) 开始的游走对应的最大的 \(k\),不存在则为 \(-1\),可以任意大则为 \(+\infin\)。
先考虑对于固定了默认出边,如何求出所有 \(f\)。考虑给边重新赋权,将默认出边的权值设为 \(0\),其余边为 \(1\),那么 \(f_x\) 就是最大的正整数,使得在这张新图上,从 \(x\) 开始走权值不超过 \(f_x\) 的路径,无法走到任何 \(d_y=+\infin\) 的点 \(y\)。也就是说,点 \(x\) 到任意 \(d_y=+\infin\) 的最短路为 \(f_x+1\)。
假如没有默认出边(或者已经固定默认出边),直接从将所有 \(d_y=+\infin\) 的点 \(y\) 的 \(f_y\) 设为 \(-1\),然后从它们开始 bfs 即可。
回到原题,现在默认出边不确定,还是延用上面的思路。具体地,从 \(-1\) 开始依次考虑每个 \(i\)。先将所有 \(f_y=i\) 的点 \(y\) 的入边 \((x,y)\) 标记,如果一个点 \(x\) 所有可以成为默认出边的出边都被标记了(即所有 \(d_x=d_y+w\) 的边 \((x,y,w)\)),那么无论如何 \(x\) 都一定会通过边权为 \(0\) 的出边走到 \(f_y=i\) 的 \(y\),故令 \(f_x\leftarrow i\),并进一步标记 \(x\) 的所有入边。直到不存在这样的 \(x\),再将存在任意一条出边被标记且 \(f_z\) 还确定的点 \(z\),令 \(f_z\leftarrow i+1\)。
总复杂度 \(\mathcal O(m\log m)\),瓶颈在于最短路,后半部分类似拓扑排序可以做到 \(\mathcal O(m)\)。

浙公网安备 33010602011771号