P1364 医院设置

1|0P1364 医院设置

1|0存树

struct Node { int left, right, father, value; } t[MAXN]; int main() { for (int i = 1; i <= n; i++) { cin >> t[i].value >> t[i].left >> t[i].right; } for (int i = 1; i <= n; i++) { t[t[i].left].father = i; t[t[i].right].father = i; } }

1|0DFS

从指定结点开始,进行 dfs。

对于某个结点:

  • 搜索的深度就是源点到这个结点的距离
  • 单点贡献就是源点到这个节点的距离乘上该点的居民数量然后加上自己父节点左右子节点的贡献的总和。
#include <iostream> #include <cstring> #define MAXN 110 using namespace std; int n, ans = 10000000000; bool vis[MAXN]; int cal(int x, int d) { if (!x || vis[x]) { return 0; } vis[x] = true; return cal(t[x].left, d + 1) + cal(t[x].right, d + 1) + cal(t[x].father, d + 1) + t[x].value * d; } int main() { for (int i = 1; i <= n; i++) { memset(vis, 0, sizeof(vis)); ans = min (ans, cal(i, 0)); } }

__EOF__

本文作者Kdlyh
本文链接https://www.cnblogs.com/kdlyh/p/17854608.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   加固文明幻景  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示