【发布时间】:2018-08-22 01:10:56
【问题描述】:
问题描述如下。
程序会逐行读取文件以构建图形。文件中的每一行都是以下三种操作之一:
-
add x y,意思是在节点x和y之间添加一条边,这样就形成了一个图。此图是无向图。 -
remove x y,表示删除节点 x 和 y 之间的一条边,如果它无效(x 或 y 在图中似乎不存在或 x 和 y 之间不存在边),则什么也不做。 -
is linked x y,如果 x 和 y 可以通过图中的所有边连接,则应该返回。此操作的时间复杂度应该是常数时间。
这是一个例子:
add 1 2
add 2 3
is linked 1 3(should be true ,cause there is a path 1-> 2, 2->3)
add 3 4
remove 2 3
is linked 1 4(should be false)
【问题讨论】:
-
我不明白你在问什么。编辑您的帖子以澄清它。
-
寻找连接的组件?您是否有要搜索的连接组件的规格?或者你只是想看看图表是否有“n”个连接的组件?你想在恒定时间内做到这一点吗?我不这么认为。
-
您对添加和删除操作有时间限制吗?否则,您可以在每次更新图表时构建一个布尔连接矩阵。然后可以在恒定时间内检查连接性,添加和删除的成本会上升。