我的問題非常直截了當。樹中兩個節點之間的距離加權
甲加權樹中給出。我們必須找到兩個給定節點之間的距離。
因爲每次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。 –