博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷——P3252 [JLOI2012]树
阅读量:7217 次
发布时间:2019-06-29

本文共 2060 字,大约阅读时间需要 6 分钟。

P3252 [JLOI2012]树

题目描述

在这个问题中,给定一个值S和一棵树。在树的每个节点有一个正整数,问有多少条路径的节点总和达到S。路径中节点的深度必须是升序的。假设节点1是根节点,根的深度是0,它的儿子节点的深度为1。路径不必一定从根节点开始。

输入输出格式

输入格式:

 

第一行是两个整数N和S,其中N是树的节点数。 第二行是N个正整数,第i个整数表示节点i的正整数。 接下来的N-1行每行是2个整数x和y,表示y是x的儿子。

 

输出格式:

 

输出路径节点总和为S的路径数量。

 

输入输出样例

输入样例#1:
3 31 2 31 21 3
输出样例#1:
2

说明

对于100%数据,N<=100000,所有权值以及S都不超过1000。

 zz,才开时的时候读错题目了,然后数组内存的与我要存的不一样,结果我竟然忘记改了!!傻不拉几的交了6遍,发现全部零分、、、

for循环,dfs找一每一个点往下的路径,超时

#include
#include
#include
#include
#define N 210000using namespace std;bool vis[N];int n,m,x,y,ans,tot,root;int a[N],fa[N],sum[N],deep[N],head[N];int read(){ int x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9'){
if(ch=='0')f=-1; ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0'; ch=getchar();} return x*f;}struct Edge { int to,next,from;}edge[N<<1];int add(int x,int y){ tot++; edge[tot].to=y; edge[tot].next=head[x]; head[x]=tot;}int dfs(int x){ sum[x]=sum[fa[x]]+a[x]; for(int i=head[x];i;i=edge[i].next) { int to=edge[i].to; if(!vis[to]&&fa[x]!=to) { vis[to]=true; dfs(to); vis[to]=false; } }}int main(){ n=read(),m=read(); for(int i=1;i<=n;i++) a[i]=read(); for(int i=1;i
TLE的dfs

依旧是dfs,不过我们不是以每一个点为根节点进行搜索,而是在dfs到每一个点的时候,我们以每一个点为叶子节点,然后向上搜索,判断路径长度是否已经到达m,我们要在向上搜的时候搜到根节点便停止搜索,防止在while中死循环!

#include
#include
#include
#include
#define N 210000using namespace std;bool vis[N];int n,m,x,y,ans,tot,sum,root;int a[N],fa[N],deep[N],head[N];int read(){ int x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9'){
if(ch=='0')f=-1; ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0'; ch=getchar();} return x*f;}struct Edge { int to,next,from;}edge[N<<1];int add(int x,int y){ tot++; edge[tot].to=y; edge[tot].next=head[x]; head[x]=tot;}int pd(int x){ sum=a[x]; while(sum

 

转载于:https://www.cnblogs.com/z360/p/7588350.html

你可能感兴趣的文章
前端开发注意的问题 ,浏览器兼容性
查看>>
centos和redhat下 uwsgi配置
查看>>
Markdown 学习笔记
查看>>
vue-element-admin 多层路由问题
查看>>
Css问题 margin float 文档流 背景图底部充满
查看>>
JS match() 方法 使用
查看>>
关于shopee平台接口(php)对接示例
查看>>
BNU OJ 51000 BQG's Random String
查看>>
PAT (Advanced Level) 1044. Shopping in Mars (25)
查看>>
hdu 1531 King
查看>>
***R
查看>>
Linux 源码编译安装mysql
查看>>
取消手机端页面长按图片出现保存或者图片被打开的方法
查看>>
关于图片居中问题
查看>>
并发下的死锁问题
查看>>
Winserver下的Hyper-v “未在远程桌面会话中捕获到鼠标”
查看>>
oracle体系结构基础
查看>>
有关TCP和UDP 粘包 消息保护边界
查看>>
Mono为何能跨平台?聊聊CIL(MSIL)
查看>>
安装scrapy问题:-bash:scrapy:command not found
查看>>