假设您有一个加权图。从一个随机节点开始,如何使用深度优先搜索(修改使用显式堆栈的迭代算法)来检查某个权重半径内存在哪些节点? (在特定权重下可以从此节点到达。)
最佳答案
假设我们使用类型 Node
来表示图中的一个节点。在最简单的情况下,Node
可能只是一个整数 ( int
)。
通常,我们使用类型为 Node
的显式堆栈.在您的情况下,我们可以使用 pair<Node,int>
类型的堆栈其中 pair<A,B>
是一对的类型,int
代表从你的起点到这个 Node
的距离.
假设我们现在在 Node
u
与距离 d
.对于相邻的 Node
v
, 让w
是边的权重uv
.然后只需按 pair(v, d+w)
到堆栈。最初,推送 pair(v0, 0)
其中 v0
是深度优先搜索的起点。
关于algorithm - 修改深度优先搜索以在特定半径内工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14039676/