题目链接

换根dp
首先dfs记录每个节点到左右子节点的距离和sum,和子节点个数cnt。

已知父节点的(sum,cnt)如何向子节点转移?
假设当前节点的信息为(sum,cnt),父节点的信息为(Fsum,Fcnt)。
那么子节点的sum = sum+[Fsum-sum-(cnt+1)] + [n-(cnt+1)]

class Solution {public:vector<vector<int>> g; vector<int> sum, cnt, ans;int n;vector<int> sumOfDistancesInTree(int N, vector<vector<int>>& edges) {sum.resize(N, 0);cnt.resize(N, 0);ans.resize(N, 0);n = N;g.resize(N, vector<int>{});for (auto it : edges) {g[it[0]].push_back(it[1]);g[it[1]].push_back(it[0]);}dfs1(0, 0);dfs2(0, 0);ans[0] = sum[0];return ans;}void dfs2(int fa, int x) {for (auto it : g[x]) {if (it == fa) continue;ans[it] = sum[x] + n - 2*(cnt[it]+1);sum[it] = ans[it];dfs2(x, it);}}pair<int,int> dfs1(int fa, int x) {for (auto it : g[x]) {if (it == fa) continue;pair<int,int> ret = dfs1(x, it);cnt[x] += ret.second + 1;sum[x] += (ret.second+1) + ret.first;}return {sum[x], cnt[x]};}
};

树形动态规划 - 树中距离之和相关推荐

  1. 834. 树中距离之和

    834. 树中距离之和 解法一:超时的暴力解法 #include <iostream> #include <vector> #include <string> #i ...

  2. 834 树中距离之和

    这道题我自己的想法只有对每个点都用一遍Dijkstra然后再求和,显然会超时,所以我都没有尝试. 研究了一下题解,发现题解很巧妙,自己对树的处理还是太稚嫩,之前树链剖分学的都忘光了. 对于固定根节点的 ...

  3. leetcode 834. 树中距离之和(dp)

    给定一个无向.连通的树.树中有 N 个标记为 0...N-1 的节点以及 N-1 条边 .第 i 条边连接节点 edges[i][0] 和 edges[i][1] .返回一个表示节点 i 与其他所有节 ...

  4. LeetCode 834. 树中距离之和(树上DP)*

    文章目录 1. 题目 2. 解题 1. 题目 给定一个无向.连通的树.树中有 N 个标记为 0...N-1 的节点以及 N-1 条边 . 第 i 条边连接节点 edges[i][0] 和 edges[ ...

  5. leetcode 834. Sum of Distances in Tree | 834. 树中距离之和(树形DP)

    题目 https://leetcode.com/problems/sum-of-distances-in-tree/ 题解 一般的算法题,指令条数为 10^8 以内是可以通过的.也就是说,如果 arr ...

  6. c++ 不撞南墙不回头——树形动态规划(树规)

    不撞南墙不回头--树规总结                                         焦作一中信息学oy 之所以这样命名树规,是因为树规的这一特殊性:没有环,dfs是不会重复,而 ...

  7. 不撞南墙不回头——树形动态规划(树规)

    不撞南墙不回头--树规总结                                         焦作一中信息学oy 之所以这样命名树规,是因为树规的这一特殊性:没有环,dfs是不会重复,而 ...

  8. 一本通提高篇 树形动态规划

    先写个考试 鸽着~ 考试有树 d p dp dp紫题 我回来了 每年联赛基本都有好几道题时树 d p dp dp,这块一定得好好学 U P D : 20201109 UPD:20201109 UPD: ...

  9. HDU1520 Anniversary party 树形动态规划

    HDU1520 Anniversary party 树形动态规划 Anniversary party Time Limit: 2000/1000 MS (Java/Others)    Memory ...

最新文章

  1. extern 关键字用法
  2. final 字符常量——确定一个值后该值无法改动,使变量变字符常量
  3. python pyqt5安装_Python3 安装PyQt5及exe打包图文教程
  4. java struts2下载文件_java struts2入门学习---文件下载的二种方式
  5. 框架通讯契约——接口
  6. git fetch实战以及与git pull 的区别
  7. 构建路径_深度学习的幸福课堂构建从评价细则中找“路径”——基于深度学习的幸福课堂构建实践研究...
  8. redis 集群 搭建(非哨兵)
  9. Visual Studio 开发环境安装与配置
  10. matlab求解普通函数的导数问题(diff函数的用法)
  11. windows 搭建kms服务器激活_OpenWrt搭建KMS服务器激活Windows和Office
  12. SPI全双工模式下收发字节的理解
  13. 算法创作|什么是数据结构
  14. Windows下安装Cygwin及包管理器apt-cyg(转)
  15. 漫画人物头像总是画不好?快看看这些注意点你有没有中招!
  16. 最详细的虚拟机安装教程
  17. 什么是TDK?什么是网站的TDK?扫(myself的)盲
  18. c# 如何抓微信把柄_C#手把手教你玩微信自动化
  19. 关闭Windows XP系统Beep提示音
  20. Office2022个人家庭版

热门文章

  1. 坑爹的jquery ui datepicker
  2. AtCoder Grand Contest 008: Contiguous Repainting(思维)
  3. sql server总结二
  4. iOS-英雄联盟人物展示
  5. win系统注册缺少的库 32位系统 64位系统
  6. ASP.NET身份验证机制membership入门——配置篇(1){转}
  7. [网络安全提高篇] 一〇五.SQL注入之揭秘Oracle数据库注入漏洞和致命问题(联合Cream老师)
  8. 【数据结构与算法】之深入解析“修剪二叉搜索树”的求解思路与算法示例
  9. 计算机网络的拓扑结构主要取决于它的( )
  10. 9.Vue 表单输入绑定