【发布时间】:2021-12-10 22:04:47
【问题描述】:
问题:
给定一个有 N 个节点和 M 个边的无向图。给定 Q 个查询,有 2 种查询类型:
- 1 - A - B - U - V
删除边U-V后检查节点A和B之间是否有路径
- 2 - A - B - X
删除节点X后检查节点A和B之间是否有路径
约束:
N <= 100000
M <= 500000
Q <= 100000
P/S:
我认为删除后 A 和 B 之间存在路径的唯一方法是 A、B 在同一个Biconnected Component 或边缘/节点不是桥/弧。
但是由于我们对于每个查询只有 logN 时间(因为最多有 100.000 个查询),我无法找到一种方法来检查 A、B 是否在 O(logN) 中的同一个双连通分量中。
有办法吗?或者这个问题有不同的解决方案吗?
【问题讨论】:
-
你在正确的轨道上;它是原始图上的双连接组件,最不常见的祖先,以及一大堆细节。 (@גלעדברקן,这些算法也可以工作,但它们在 IMO 更复杂,而且常量很糟糕。)
标签: algorithm tree graph-theory undirected-graph