題目大意:給出一棵無向樹,再給出 m 個初始時點燃的結點,這些點燃的結點會向四周擴散,若結點 x 已經被點燃,但結點 y 未被點燃,如果點 x 和點 y 之間的邊權為 w 的話,那么經過 2 * w 的時間點 y 也會被點燃,問 n 個點全部被點燃的時間是多少
題目分析:多源起點的最短路問題,在處理完 d[ i ] 代表從任一起點到結點 i 的最短路徑后,必定存在一條邊 x -?y ,滿足 z 是邊 x - y 上的一個點,燃燒的傳遞路徑是:起點 1 -> x -> z <- y <- 起點 2,假設 w 為邊 x - y 的權值,且?d[ y?] > d[ x ] ,則不難看出,當經過時間 2 * d[ y ] 后,從起點 2 出發的路徑到達了點 y ,從起點 1 出發的路徑到達了邊 x - y 上,且已經走過了 w 的 ( d[ y ] - d[ x ] ),此時還剩下 w - ( d[ y ] - d[ x ] ) 的長度需要從兩端同時相向而行,則需要的時間就是 2 * ( w - ( d[ y ] - d[ x ] ) ) / 2 ,乘以 2 的意思是因為一個單位長度需要兩個單位時間來完成,除以 2 的意思就是因為是從兩端同時出發