3383:施法所需最低符文数量(★★)
目录
题目
Alice 刚刚从巫师学校毕业,并且希望施展一个魔法咒语来庆祝。魔法咒语包含某些需要集中魔力的焦点,其中一些焦点含有作为咒语能量源的魔法水晶。焦点可以通过 有向符文 进行连接,这些符文将魔力流从一个焦点传输到另一个焦点。
给定一个整数 n
表示焦点的数量,以及一个整数数组 crystals
,其中 crystals[i]
表示有魔法水晶的焦点。同时给定两个整数数组 flowFrom
和 flowTo
,表示存在的 有向符文。第 ith
个符文允许魔力流从焦点 flowFrom[i]
传输到焦点 flowTo[i]
。
你需要找到 Alice 必须添加到她的咒语中的定向符文数量,使得每个焦点要么:
- 包含 一个魔法水晶。
- 从其它焦点 接收 魔力流。
返回她所需要添加的 最少 有向符文数量。
示例 1:
输入:n = 6, crystals = [0], flowFrom = [0,1,2,3], flowTo = [1,2,3,0]
输出:2
解释:
添加两个有向符文:
- 从焦点 0 到焦点 4。
- 从焦点 0 到焦点 5。
示例 2:
输入:n = 7, crystals = [3,5], flowFrom = [0,1,2,3,5], flowTo = [1,2,0,4,6]
输出:1
解释:
添加从焦点 4 到焦点 2 的有向符文。
提示:
2 <= n <= 105
1 <= crystals.length <= n
0 <= crystals[i] <= n - 1
1 <= flowFrom.length == flowTo.length <= min(2 * 105, (n * (n - 1)) / 2)
0 <= flowFrom[i], flowTo[i] <= n - 1
flowFrom[i] != flowTo[i]
- 所有的有向符文 互不相同。
相似问题:
分析
- 按强连通分量缩点后,统计没有符文的根即可
解答
|
|
515 ms