1053 Path of Equal Weight(超级无敌详细注释+45行代码)

news2024/11/28 4:45:24

分数 30

全屏浏览题目

切换布局

作者 CHEN, Yue

单位 浙江大学

Given a non-empty tree with root R, and with weight Wi​ assigned to each tree node Ti​. The weight of a path from R to L is defined to be the sum of the weights of all the nodes along the path from R to any leaf node L.

Now given any weighted tree, you are supposed to find all the paths with their weights equal to a given number. For example, let's consider the tree showed in the following figure: for each node, the upper number is the node ID which is a two-digit number, and the lower number is the weight of that node. Suppose that the given number is 24, then there exists 4 different paths which have the same given weight: {10 5 2 7}, {10 4 10}, {10 3 3 6 2} and {10 3 3 6 2}, which correspond to the red edges in the figure.

Input Specification:

Each input file contains one test case. Each case starts with a line containing 0<N≤100, the number of nodes in a tree, M (<N), the number of non-leaf nodes, and 0<S<230, the given weight number. The next line contains N positive numbers where Wi​ (<1000) corresponds to the tree node Ti​. Then M lines follow, each in the format:

ID K ID[1] ID[2] ... ID[K]

where ID is a two-digit number representing a given non-leaf node, K is the number of its children, followed by a sequence of two-digit ID's of its children. For the sake of simplicity, let us fix the root ID to be 00.

Output Specification:

For each test case, print all the paths with weight S in non-increasing order. Each path occupies a line with printed weights from the root to the leaf in order. All the numbers must be separated by a space with no extra space at the end of the line.

Note: sequence {A1​,A2​,⋯,An​} is said to be greater than sequence {B1​,B2​,⋯,Bm​} if there exists 1≤k<min{n,m} such that Ai​=Bi​ for i=1,⋯,k, and Ak+1​>Bk+1​.

Sample Input:

20 9 24
10 2 4 3 5 10 2 18 9 7 2 2 1 3 12 1 8 6 2 2
00 4 01 02 03 04
02 1 05
04 2 06 07
03 3 11 12 13
06 1 09
07 2 08 10
16 1 15
13 3 14 16 17
17 2 18 19

Sample Output:

10 5 2 7
10 4 10
10 3 3 6 2
10 3 3 6 2

Special thanks to Zhang Yuan and Yang Han for their contribution to the judge's data.

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

#include<bits/stdc++.h>
using namespace std;
const int N=105;
int n,m,s;
int w[N];//存放结点权值 
vector<int>v[N];//存放各非叶节点的孩子节点 
vector<vector<int>>ans;//存放路径 
void dfs(int u,int sum,vector<int>&path){//深度遍历 
    bool leaf=true; 
    if(v[u].size())leaf=false;//若有孩子则不是叶结点 
    if(leaf){//如果是叶结点 
        if(sum==s)ans.push_back(path);//若此时权值符合,则放到ans里    
    }
    else{//若不是叶结点 
            if(v[u].size()){//若该节点有孩子 
                for(int j=0;j<v[u].size();j++){//暴搜 
                    path.push_back(w[v[u][j]]);//把当前结点的权值加入路径 
                    dfs(v[u][j],sum+w[v[u][j]],path);//深度遍历 
                    path.pop_back();//恢复现场 
            }
        }
    }
}
int main(){
    cin>>n>>m>>s;
    for(int i=0;i<n;i++)cin>>w[i];//输入各结点权值 
    while(m--){//输入m个非叶节点 
        int id,k;
        cin>>id>>k;
        while(k--){//保存结点的孩子 
            int kid;
            cin>>kid;
            v[id].push_back(kid);
        }
    }
    vector<int>path({w[0]});//权值路径,一开始只有根结点权值 
    dfs(0,w[0],path);//深度遍历 
    sort(ans.begin(),ans.end(),greater<vector<int>>());//按字典序从大到小排列 
    for(auto t:ans){//迭代器遍历 
        cout<<t[0];
        for(int i=1;i<t.size();i++)cout<<" "<<t[i];
        cout<<endl;
    }
    return 0;
}

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

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

相关文章

UE5.1.1C++从0开始(6.两个额外的魔法弹:瞬移魔法弹和黑洞魔法弹)

做完这两个功能总共花费了一个下午加一个晚上的时间&#xff0c;瞬移魔法弹难度较低&#xff0c;黑洞魔法可能我的理解有误导致消耗时间较长&#xff0c;我会在下面把踩的坑写出来。 加上这个作业&#xff0c;我们一共做了三个魔法子弹了。同时那个老师也说我们可以写一个父类…

js中各种运算符

文章目录 扩展运算符&#xff1a;...逻辑运算符&#xff08;&& 或 || &#xff09;第一、&& (逻辑与)运算&#xff0c;看一个简单的例子&#xff1a;第二、|| (逻辑或)运算&#xff0c;看一个简单的例子&#xff1a;三、&& (逻辑与) 和||&#xff08;逻…

JMX vs JFR:谁才是最强大的JVM监控利器?

大家好&#xff0c;我是小米&#xff01;今天我们来聊一聊JVM监控系统&#xff0c;特别是关于JMX和JFR的使用。你是否有过在线上应用出现性能问题时&#xff0c;无法准确获取关键指标的困扰呢&#xff1f;那么&#xff0c;不妨听听我给大家带来的解决方案。 什么是JMX 首先&a…

什么是CTF?打CTF的意义是什么?(附网络安全入门教程)

什么是CTF? CTF在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。它起源于1996年DEFCON全球黑客大会&#xff0c;以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。发展至今&#xff0c;已经成为全球范围网络安全圈流行的竞赛形式&#xff0…

使用mkdocs快速部署上线静态站点到Github

背景 mkdocs是一种方便地生成站点的工具&#xff0c;相比hugo、hexo等个人博客而言&#xff0c;mkdocs更加简便、轻量级&#xff0c;可以快速帮助部署上线类似个人技术本&#xff08;notebook&#xff0c;wiki&#xff09;之类的站点。并且支持默认支持站点内搜索&#xff0c;…

网络安全自学路线

很多人上来就说想学习黑客&#xff0c;但是连方向都没搞清楚就开始学习&#xff0c;最终也只是会无疾而终&#xff01;黑客是一个大的概念&#xff0c;里面包含了许多方向&#xff0c;不同的方向需要学习的内容也不一样。 算上从学校开始学习&#xff0c;已经在网安这条路上走…

基于ensp的mpls vpn跨域optionA方案(分公司之间不能互访但是能访问总部场景)

目录 一 实验拓扑 二 实验要求 三 实验分析 四 实验配置说明 4.1完成正常ip地址配置&#xff0c;ISP内部使用ospf协议和mpls ldp协议 4.2 PE和CE之间起ebgp邻居 4.3 PE和PE之间起mpbgp邻居 4.4 PE和CE、ASBR之间设置VRF来进行RT值的过滤&#xff0c;选择合适的RT值来完…

网络编程:TCP socket

文章目录 阅读前导 服务端定义日志框架成员属性服务端框架 初始化服务器创建套接字绑定开启监听 运行服务器netstat 工具获取连接和通信准备通信逻辑 单进程服务端函数&#xff08;version1&#xff09;telent 工具测试 多进程服务端&#xff08;version2&#xff09;创建子进程…

手把手教你学习IEC104协议和编程实现 十四-文件操作之目录操作

文件服务也算是最后一个系统的大章节了。早期的IEC104软件仅实现了基本的通讯,也就是我们常说的3遥,对于定值和文件的操作都很少提及。 首先我们先要看看文件都包含那些。 文件包含的内容 故障录波文件 故障录波文件我们单独开一章来讲解。包含通讯及文件的格式 历史数据…

多核系统内存假共享问题

多核处理器&#xff08;SMP&#xff09;系统中&#xff0c; 每一个处理器都有一个本地高速缓存。内存系统必须保证高速缓存的一致性。当不同处理器上的线程修改驻留再同一高速缓存中的变量时就会发生假共享(false sharing)&#xff0c;结果导致高速缓存无效&#xff0c;并强制更…

长期封闭环境中与积极情绪相关的肠道菌群

谷禾健康 近年来&#xff0c;随着微生物群-肠-脑轴研究的深入&#xff0c;越来越多证据表明&#xff0c;微生物群-肠-脑轴在调节大脑功能方面发挥着关键作用&#xff0c;尤其是在情绪处理和行为方面。然而&#xff0c;肠道微生物群与长期封闭环境中的心理变化之间的相关性仍知之…

小魔推助力实体行业短视频创作,打爆UGC素人流量!

最近不止一次的和大家讲到UGC的玩法&#xff0c;相信很多朋友也有了一定的认知&#xff0c;UGC简单来说&#xff0c;就是通过用户来生产原创内容&#xff0c;通过实体店的门头、环境、特色服务等相关内容&#xff0c;并且带有门店地址发布&#xff0c;就可以提升实体商家的POI热…

tensorrt

【TensorRT】动态batch进行推理_tensorrt 动态batch_there2belief的博客-CSDN博客 https://www.cnblogs.com/harrymore/p/15387117.html 1.动态batch 2.tensor内存管理 3.

《河北教育》期刊简介及投稿邮箱

《河北教育》期刊简介及投稿邮箱 主管单位:河北省教育厅 主办单位:河北省教育宣传中心 国际刊号ISSN&#xff1a;1004-6208&#xff1b;国内刊号CN&#xff1a;13-1036/G4&#xff1b;邮发代号&#xff1a;18-67 出版周期&#xff1a;月刊 出版地&#xff1a;河北省石家庄…

pytorch中backward()函数与gradient 参数详解

矩阵乘法的例子1 以下例来说明backward中参数gradient的作用 注意在本文中表示矩阵乘法&#xff0c;*表示对应元素相乘 求A求偏导 试运行代码1 import torch# [1,2][2*3][1,3] A torch.tensor([[1., 2.]], requires_gradTrue) B torch.tensor([[10., 20., 30.], [100., 20…

『赠书活动 | 第五期』《人工智能数学基础》

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; 『赠书活动 &#xff5c; 第五期』 本期书籍&#xff1a;《人工智能数学基础》 赠书规则&#xff1a;评论区&#xff1a;点赞&#xff5c;收藏&#xff5c;留言 评论…

DAP-seq技术鉴定葡萄MADS-box转录因子VvMADS28的靶基因,揭示葡萄胚珠发育的调控机制

葡萄是一种营养丰富、美味可口的水果&#xff0c;深受世界各地消费者的喜爱。近年来&#xff0c;无籽葡萄也越来越受大家的欢迎&#xff0c;因此&#xff0c;无籽葡萄品种的培育成为一个重要的育种目标&#xff0c;而了解葡萄种子发育的分子遗传调控机制对于无籽栽培品种的培育…

Kyligence Zen 产品体验-好用的指标平台

文章目录 一、Kyligence Zen概念一、BI发展历史1.以报表为核心的IT响应式服务2.以宽表为核心的自助可视化分析3.以指标为核心的可视化分析、增强分析 二、什么是Kyligence Zen&#xff1f;1.官网的介绍2.个人的理解 二、产品体验一、创建账号二、指标1.直接创建指标2.导入指标数…

postgresql集群编译安装

postgreSQL集群部署1环境准备&#xff08;三台服务器全部执行&#xff09; 2.1.1 准备三台虚拟机 服务器名称 服务器IP 描述 Pgsql-0 xxx.xxx.xxx.xxx master节点 Pgsql-1 xxx.xxx.xxx.xxx slave1节点 Pgsql-2 xxx.xxx.xxx.xxx slave2节点 2.1.2 安装编译需要的相…

ANR实战案例 - 通用方法总结

系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 例如&#xff1a;第一章 Python 机器学习入门之pandas的使用 文章目录 系列文章目录前言一、业务耗时1.登录Dialog优化2.子线程更新通知栏 二、频繁调用1.底部Tab资源初始…