题意简述
n个房间,有一只老鼠可能出现在任意一个房间,并且老鼠在第i个房间出现时,下一秒就会运动到第ai个房间。需要放陷阱确保老鼠不管在哪里出现都会被抓。在第i个房间放陷阱成本ci,输出最少需要多少成本完成题目要求
(vjudge翻译)(又是蒯的)
思路框架
我们把$i$向$a_i$连边,就得到了老鼠的走向图。然后我们在走向图上找到所有强连通分量。显然,同一个强连通分量(由于每个点有且仅有唯一的出边,所以一个强连通分量肯定就是一个环)中,我们只要在其中一个位置布置陷阱即珂。那么我们就在花费最小的位置布置好了。
那么,哪些强连通分量中要布置陷阱呢?只有缩点后出度为$0$的强连通分量需要布置,因为别的强连通分量会不断的往下走,肯定会走到一个出度为$0$的强连通分量。
总结一下思路:
- 找出所有强连通分量,求出里面最小的花费,令它为这个强连通分量的花费。
- 答案=所有出度为0的强连通分量花费的和。
代码
1 |
|