假设我们有一个只有一个源的有向无环图(DAG)。我想找到节点
n
,使得从源到所有汇点的路径都经过n
(即n
支配所有汇点)。换句话说:如果我们删除n
的所有后继节点,则所有路径都会以n
结束。问题在于,在DAG中逐步标记为已删除的节点。随着节点被标记为删除,其他节点可以开始满足上述属性。当这种情况发生时,如何高效地检测呢?
奖励分数: 如果数据结构能够以比单独对每个源运行算法更有效的方式来处理多个源,则额外加分。
v
:删除其后继节点 [只删除到后继节点的边], 并检查所有路径是否以v
结尾 [使用 BFS,您没有到达任何其他节点u
,使得d_out(u) = 0
],如果是,则v
是支配者。或者您正在寻找比二次更好的运行时间的解决方案吗? - amit