原題目:
思路:採用樹形動態規劃的思想。對於每乙個節點來說,所有節點到他的距離之和的狀態轉移方程為:
其中dp[v]代表以v為根的所有節點到他的距離,sz[v]表示已v為根的子樹節點的數量。
dp[u] = dp[u] - (dp[v] + sz[v])
sz[u] = sz[u] - sz[v]
dp[v] = dp[v] + (dp[u] + sz[u])
sz[v] = sz[v] + sz[u]
**:
class solution
}void dfs2(int u,int f)
}public:
vectorsumofdistancesintree(int n, vector>& edges) );
// 構建原圖
for(auto& i:edges)
dfs(0,-1);//獲取dp
dfs2(0,-1);//使用計算得更新ans
return ans;}};
leetcode 834樹中距離之和
這道題考察的是樹形dp,需要兩次dfs。第一次dfs建立樹形結構,並求得根節點到其他點的距離和。第二次dfs是通過交換根節點,獲得以其他點作為根節點的距離和。對於根節點u和它的子結點v,u與其他節點的距離和dp u 可以表示為 d p v sz v sigma dp v sz v dp v sz v...
leetcode 834 樹中距離之和
題目鏈結 給定乙個無向 連通的樹。樹中有 n 個標記為 0 n 1 的節點以及 n 1 條邊 第 i 條邊連線節點 edges i 0 和 edges i 1 返回乙個表示節點 i 與其他所有節點距離之和的列表 ans。說明 1 n 10000 class solution if n 2 vecto...
834 樹中距離之和
給定乙個無向 連通的樹。樹中有 n 個標記為 0.n 1 的節點以及 n 1 條邊 第 i 條邊連線節點 edges i 0 和 edges i 1 返回乙個表示節點 i 與其他所有節點距離之和的列表 ans。示例 1 輸入 n 6,edges 0,1 0,2 2,3 2,4 2,5 輸出 8,12...