我的问题非常直截了当。树中两个节点之间的距离加权
甲加权树中给出。我们必须找到两个给定节点之间的距离。
因为每次bfs超时,查询次数非常高(约75000),所以我尝试了不同的方式来做到这一点。
我的算法是这样的:
我跑从顶点0 DFS和根计算的距离(0)所有顶点这样的事情
depth[v]=depth[u]+w,where u is parent of v and w is weight b/w (u,v)
一旦我计算所有节点的深度都使用dfs和每个节点的第2个父节点(假设我知道该怎么做)。我计算了LCA为(u,v)询问了每个查询。
然后我计算方法为距离这样
distance between (u,v)=depth[u]+depth[v]-2*depth[lca(u,v)]
但如预期,我没有得到正确的判决。 是我的算法正确的还是我失去了一些重要的 .Guidance需要:)
诗柜面任何人希望看到我实现链路http://paste.ubuntu.com/13129038/
喜先生,我刚才看到我忽略父阵列的基本情况十分感谢这一点,但它仍然没有得到正确的可能是一些其他犯错误发现问题这个正确的解决办法,但我不明白为什么我错了还是我的算法是错误的,你可以帮助看到这个http://paste.ubuntu.com/13129663/ –
嗨,先生,谢谢你的时间。我终于解决了这个问题。我正在做的一个实际的错误是计算LCA的重量是垃圾。我使用另一个阵列作为节点深度并计算LCA(愚蠢的我:p)。感谢您的时间(实现-http://paste.ubuntu.com/13142974/)+1。 –