树的节点值之和

题目背景

墨家家主有棵树。
题目描述

给定一个保存树节点信息的数据结构,它包含了树节点唯一的 id ,树节点值 和 直系子节点的 id 。

比如,树节点1是树节点2的父节点,树节点2是树节点3的父节点。他们相应的树节点值为 9 , 4 , 1 。那么树节点1的数据结构是 [1, 9, [2]] ,树节点2的数据结构是 [2, 4, [3]] ,树节点3的数据结构是 [3, 1, []] 。注意虽然树节点3也是树节点1的一个子节点,但是由于并不是直系子节点,因此没有体现在树节点1的数据结构中。

现在输入一棵树的所有树节点信息,以及单个树节点id,返回这个树节点和它所有子节点的节点值之和。
输入格式

第一行输入一个整数N,代表共有N个树节点。

接下来输入N个树节点,每个树节点第一行输入它的id,第二行输入节点的值,第三行输入直系子节点的个数M,第四行输入M个直系子节点的id值。

最后一行输入一个树节点id。
输出格式

一个整数,最后一行输入的树节点的和它所有子节点的节点值之和。
输入输出样例
输入

3
1
5
2
2 3
2
3
0
3
3
0
1

输出

11

说明/提示

树节点 1 自身的节点值是 5 ,他有两个直系子节点 2 和 3 ,而且 2 和 3 的节点值均为 3 。因此树节点 1 的总节点值是 5 + 3 + 3 = 11 。

一个树节点最多有一个直系父节点,但是可以有多个直系子节点。

节点数量不超过 2000 。

解题思路:
正常模拟一棵树!!!但是用vector容器,在规模较大的时候,效率比数组慢很多,观察下面的数据点可以知道,最后两个数据点,用vector容器的写法是过不了的。

代码如下:

#include <iostream>
#include <vector>
using namespace std;
const int N = 1010;
vector<int>tnode[N];
int w[N];
int ans;
void dfs(int node)
{ans+=w[node];for (int i = 0;i<tnode[node].size();i++){dfs(tnode[node][i]);}
}int main()
{int cnt;cin>>cnt;while(cnt--){int id,chiln;cin>>id;cin>>w[id];cin>>chiln;if (chiln==0) continue;else{for (int i = 1;i<=chiln;i++){int chilid;cin>>chilid;tnode[id].push_back(chilid);}}}int root;cin>>root;dfs(root);cout<<ans<<endl;return 0;
}

在这里插入图片描述

代码如下:

#include <iostream>
using namespace std;
const int N = 2010;
int ans;struct node {int w;int ch[N];int size;
};node tnode [N];void dfs(int root) {ans += tnode[root].w;for (int i = 1; i <= tnode[root].size; i++) {dfs(tnode[root].ch[i]);}
}int main() {int cnt;cin >> cnt;while (cnt--) {int id, n;cin >> id;cin >> tnode[id].w;cin >> n;if (n == 0)continue;else {for (int i =  1; i <= n; i++) {cin >> tnode[id].ch[i];}tnode[id].size = n;}}int root;cin >> root;dfs(root);cout << ans << endl;return 0;
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/311238.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET Core开发实战(第21课:中间件:掌控请求处理过程的关键)--学习笔记(上)...

21 | 中间件&#xff1a;掌控请求处理过程的关键这一节讲解一下如何通过中间件来管理请求处理过程中间件工作原理next 表示后面有一个委托&#xff0c;每一层每一层套下去可以在任意的中间件来决定在后面的中间件之前执行什么&#xff0c;或者说在所有中间件执行完之后执行什么…

简单的二叉树创建与遍历

编一个程序&#xff0c;读入用户输入的一串先序遍历字符串&#xff0c;根据此字符串建立一个二叉树&#xff08;以指针方式存储&#xff09;。 例如如下的先序遍历字符串&#xff1a; ABC##DE#G##F### 其中“#”表示的是空格&#xff0c;空格字符代表空树。建立起此二叉树以后&…

疫情期间,千万级系统宕机N次,老板撂下狠话:没法把性提升10倍,全员解雇!...

性能调优整体思路作为一名团队技术核心&#xff0c;如何让系统跑得通、跑得稳、跑得快是必然会面对的场景。性能分析是一个大课题&#xff0c;不同的架构、不同的应用场景、不同的程序语言分析的方法若有差异&#xff0c;抽象一下大致分为两类&#xff1a;自底向上&#xff1a;…

Anaconda创建python虚拟环境

在创建虚拟环境之前首先我们需要打开命令终端&#xff1a;Win R 输入cmd 或者直接打开Anaconda Prompt&#xff08;Anaconda&#xff09; pycharm下载历史版本地址&#xff1a;https://www.jetbrains.com/pycharm/download/other.html Anaconda下载历史版本地址&#xff1a;ht…

[蓝桥杯][算法提高VIP]夺宝奇兵-递推+记忆化搜索

题目描述 在一座山上,有很多很多珠宝,它们散落在山底通往山顶的每条道路上,不同道路上的珠宝的数目也各不相同.下图为一张藏宝地图: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 ”夺宝奇兵”从山下出发,到达山顶,如何选路才能得到最多的珠宝呢?在上图所示例子中,按照5-> 7-> 8-&g…

梯度下降与线性回归

对于代价函数&#xff1a; loss∑i(y^−yi)2loss\sum_i{(\hat{y}-y_i)}^2loss∑i​(y^​−yi​)2 loss∑i(w∗xib−yi)2loss\sum_i{(w*x_ib-y_i)}^2loss∑i​(w∗xi​b−yi​)2 最常见的代价函数&#xff1a;均方差代价函数&#xff08;Mean-Square Error&#xff0c;MSE&…

.NET Core开发实战(第21课:中间件:掌控请求处理过程的关键)--学习笔记(下)...

21 | 中间件&#xff1a;掌控请求处理过程的关键如果在 Map 的时候逻辑复杂一点&#xff0c;不仅仅判断它的 URL 地址&#xff0c;而且要做特殊的判断的话&#xff0c;可以这么做把判断逻辑变成一个委托我们要判断当我们的请求地址包含 abc 的时候&#xff0c;输出 new abcapp.…

英伟达3060Ti安装GPU版本TensorFlow2.X和Pytorch

查看Python与TensorFlow对应版本 安装GPU版本的TensorFlow的时候&#xff0c;我们需要考虑的一个问题是Python版本与TensorFlow版本的对应关系&#xff0c;可以参考下面这个链接&#xff1a; Python对应TensorFlow CPU版本 GPU版本 查看显卡驱动对应的CUDA版本并且下载安装 …

200行代码,7个对象——让你了解ASP.NET Core框架的本质[3.x版]

2019年1月19日&#xff0c;微软技术&#xff08;苏州&#xff09;俱乐部成立&#xff0c;我受邀在成立大会上作了一个名为《ASP.NET Core框架揭秘》的分享。在此次分享中&#xff0c;我按照ASP.NET Core自身的运行原理和设计思想创建了一个 “迷你版” 的ASP.NET Core框架&…

逻辑回归(二)

逻辑回归 在学习逻辑回归之前我们先回顾一下线性回归。线性回归解决的是回归问题&#xff0c;简单来说就是&#xff0c;我们需要找到一个函数&#xff0c;这个函数需要尽可能的拟合所有训练集的样本点。 逻辑回归解决的是分类问题&#xff0c;它的目标是找到一个函数&#x…

上元节的灯会(灭)-区间dp

题目背景 上元节的庙会上&#xff0c;牛宝靠自己的聪明才智成功破解了花灯阵&#xff0c;点亮了在场所有花灯&#xff0c;但他没料到的是这个游戏包含AB两个项目&#xff0c;A项目就是点亮所有花灯&#xff0c;而B项目则是熄灭所有花灯。不过点亮的是花灯阵&#xff0c;熄灭的…

Asp.Net Core 中IdentityServer4 授权中心之应用实战

一、前言查阅了大多数相关资料&#xff0c;搜索到的IdentityServer4 的应用文章大多是比较简单并且多是翻译官网的文档编写的&#xff0c;我这里在 Asp.Net Core 中IdentityServer4 的应用分析中会以一个电商系统架构升级过程中普遍会遇到的场景进行实战性讲述分析&#xff0c;…

交通标志识别项目教程

项目结构图 下载好项目压缩包后解压&#xff0c;得到以上的文件&#xff0c;首先将画红圈的文件删除&#xff08;如果有&#xff09; 安装软件 安装Anaconda 安装Pycharm 安装格式工厂 在上图中这个位置输入cmd回车&#xff0c;即可打开命令终端。用这样的方式打开命令终端…

C# 视频监控系统

去过工厂或者仓库的都知道&#xff0c;在工厂或仓库里面&#xff0c;会有很多不同的流水线&#xff0c;大部分的工厂或仓库&#xff0c;都会在不同流水线的不同工位旁边安装一台电脑&#xff0c;一方面便于工位上的师傅把产品的重要信息录入系统&#xff0c;便于公司系统数据采…

sklearn svm如何选择核函数_机器学习之支持向量机多种核模型对比

机器学习xueyifeiyun1989zx&#xff0c;公众号&#xff1a;围着围巾的小黑机器学习之监督学习实战前文我们提到机器学习中的监督学习&#xff0c;其中有一个模型是我们提到的但是没有训练测试的&#xff0c;叫做支持向量机(简称SVM)。支持向量机也是监督学习里面一个非常容易理…

程序员过关斩将--从每秒6000写请求谈起

点击上方“蓝字”关注我们菜菜哥&#xff0c;紧急求助呀怎么回事&#xff1f;产品经理砍你了&#xff1f;没有&#xff0c;只是写了个新项目&#xff0c;上线就被压垮了什么功能&#xff0c;这么强悍&#xff1f;一个记录用户观看视频进度信息的功能那如果用户基数大&#xff0…

批量将PPM格式图片转化为JPG格式

将PPM格式图片转化为JPG格式 做图像识别的时候数据集常常是ppm格式的&#xff0c;虽然不影响建模训练&#xff0c;但是我们电脑往往不支持ppm格式的图像展示。 比如到做交通标志识别的时候用到的BelgiumTS交通数据集或者德国GTSRB数据集 下载后得到都是ppm格式的图像。 格式转…

Magicodes.IE 2.2里程碑需求和建议征集

简介Magicodes.IE是导入导出通用库&#xff0c;支持Dto导入导出以及动态导出&#xff0c;支持Excel、Word、Pdf、Csv和Html。已加入NCC开源组织。Magicodes.IE 2.0发布Github&#xff1a;https://github.com/dotnetcore/Magicodes.IE码云&#xff08;手动同步&#xff0c;不维护…

交通标志识别教程(二)

项目结构图 下载好项目压缩包后解压&#xff0c;得到以上的文件&#xff0c;首先将画红圈的文件删除&#xff08;如果有&#xff09; 安装软件 解压软件包 安装Anaconda 直接下一步&#xff0c;到了这个页面全部勾选&#xff0c;否则不会添加添加环境变量。 安装Pycharm …

深度长文:Power Automation 帮助企业实现数字化转型

01自动化始于您在Ignite 2019上&#xff0c;我们宣布将Flow更改为Power Automate&#xff0c;并在UI Flow连接器的公开预览中引入了机器人流程自动化&#xff08;RPA&#xff09;。我们对几种激动人心的功能感到兴奋&#xff0c;这些功能将在今年全面上市&#xff0c;并想花一点…