51 nod 1424

2023-12-07 03:59
文章标签 51 nod 1424

本文主要是介绍51 nod 1424,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1424 零树

有一棵以1为根的树,他有n个结点,用1n编号。第i号点有一个值vi

现在可以对树进行如下操作:

步骤1:在树中选一个连通块,这个连通块必须包含1这个结点。

步骤2:然后对这个连通块中所有结点的值加1或者减1

问最少要经过几次操作才能把树中所有结点都变成0

注意:步骤1与步骤2合在一起为一次操作。

 

Input

单组测试数据。

第一行有一个整数n(1 ≤ n ≤ 10^5)

接下来n-1行,每行给出 ai  bi (1 ≤ ai, bi ≤ n; ai ≠ bi),表示aibi之间有一条边,输入保证是一棵树。

最后一行有n个以空格分开的整数,表示n个结点的值v1, v2, ..., vn (|vi| ≤ 10^9)

Output

输出一个整数表示最少的操作步数。.

Input示例

3

1 2

1 3

1 -1 1

Output示例

3

System Message (题目提供者)

C++的运行时限为:1000 ms ,空间限制为:131072 KB  

题解:对于树来说,任意一个节点如果与根节点联通,那么其祖先一定和根节点联通。所以对于任意一颗子树,up【i】表示以i为根的子树最少+1的次数,down【i】表示i为根的子树最少-1的次数,每次取儿子节点中最大的即可。

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#define N 300000
using namespace std;
int n;
int last[N<<1],to[N<<1],head[N],cnt=0;
void ins(int u,int v){last[++cnt]=head[u];head[u]=cnt;to[cnt]=v;
}
long long down[N],up[N],val[N]; 
void dfs(int x,int fa)
{for(int i=head[x];i;i=last[i]){if(to[i]==fa) continue;dfs(to[i],x);down[x]=max(down[x],down[to[i]]);up[x]=max(up[x],up[to[i]]);}val[x]+=(up[x]-down[x]);if(val[x]>0) down[x]+=val[x];if(val[x]<0) up[x]-=val[x];return ;
}
int main()
{int u,v;scanf("%d",&n);for(int i=1;i<n;i++){scanf("%d%d",&u,&v);ins(u,v);ins(v,u);}for(int i=1;i<=n;i++) scanf("%lld",&val[i]);dfs(1,0);printf("%lld",(up[1]+down[1]));return 0;
}




这篇关于51 nod 1424的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/464411

相关文章

51单片机学习记录———定时器

文章目录 前言一、定时器介绍二、STC89C52定时器资源三、定时器框图四、定时器模式五、定时器相关寄存器六、定时器练习 前言 一个学习嵌入式的小白~ 有问题评论区或私信指出~ 提示:以下是本篇文章正文内容,下面案例可供参考 一、定时器介绍 定时器介绍:51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成。 定时器作用: 1.用于计数系统,可

基于51单片机抽奖系统

基于51单片机抽奖系统 (仿真+程序) 功能介绍 具体功能: 1.利用5片74HC495对单片机的IO进行串并转换,进而控制5个1位数码管; 2.采用一个独立按键用于抽奖系统的启停控制; 3.8位拨码开关是用于设定随机数发生器的“种子值”(初始值); ​演示视频: 基于51单片机抽奖系统  添加图片注释,不超过 140 字(可选) 程序 #inclu

江协科技51单片机学习- p16 矩阵键盘

🚀write in front🚀   🔎大家好,我是黄桃罐头,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​  💬本系列哔哩哔哩江科大51单片机的视频为主以及自己的总结梳理📚  前言: 本文是根据哔哩哔哩网站上“江协科技51单片机”视频的学习笔记,在这里会记录下江协科技51单片机开发板的配套视频教程所作的实验和学习

江协科技51单片机学习- p11 Proteus安装模拟51单片机

前言: 本文是根据哔哩哔哩网站上“江协科技51单片机”视频的学习笔记,在这里会记录下江协科技51单片机开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了江协科技51单片机教学视频和链接中的内容。 引用: Proteus快速入门(最详细教程)-CSDN博客  数码管显示: 【51单片机实验笔记】LED篇(三) 数码管的基本控制_51单片机数码管-CSDN博客 https

51单片机STC89C52RC——6.1 中断系统

一,文字层面理解          反正我看下面的几段文字时脑壳没有正常运转。一个头几个大         中断系统是为使CPU具有对外界紧急事件的实时处理能力而设置的。         当中央处理机CPU正在处理某件事的时候外界发生了紧急事件请求,要求CPU暂停当前的工作,转而去处理这个紧急事件,处理完以后,再回到原来被中断的地方,继续原来的工作,这样的过程称为中断。实现这种功能的部件

基于51单片机的心率计仿真设计

1.本设计基于STC89C51/52(与AT89S51/52、AT89C51/52通用,可任选)单片机。 2.LCD1602液晶显示当前的心率,单位是心率/分钟。 3.手指放到红外对管中,2秒内读出心率。 4.按键可以设置报警的上下限心率。 使用方法:三个按键:一个设置,一个加,一个减。按下设置的时候才可以加减。 由于仿真中没有红外,手指也模拟不了,其实就是单片机

【因果推断python】51_去偏/正交机器学习3

目录 What is Non-Parametric About? What is Non-Parametric About? 在我们继续之前,我只想强调一个常见的误解。当我们考虑使用非参数 Double-ML 模型来估计 CATE 时,我们似乎会得到一个非线性治疗效果。例如,让我们假设一个非常简单的数据生成过程(DGP),其中 discont 对销售额的影响是非线性的,但却是通过

基于51单片机数字频率计的设计资料

题目:基于51单片机数字频率计的设计               系    部:                                                                              专    业:

51单片机STC89C52RC——5.1 LCD1602液晶显示屏

目录 目的 一,STC单片机模块 二,LCD1602 2.1 模块简介 2.2 针脚 2.3 DDRAM地址与显示器对应关系 2.4 标准字库表 2.5 常用指令 2.6 读写操作 三,创建Keil项目 四,代码  五,代码编译、下载到51单片机 六,效果 目的 将LCD1602做成一个调试显示器使用。实现以下功能 LCD_Init();

江协科技51单片机学习- p11 静态数码管显示

前言: 本文是根据哔哩哔哩网站上“江协科技51单片机”视频的学习笔记,在这里会记录下江协科技51单片机开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了江协科技51单片机教学视频和链接中的内容。 引用: 51单片机入门教程-2020版 程序全程纯手打 从零开始入门_哔哩哔哩_bilibili c51语言变量语句意思,C51中循环语句-CSDN博客 数码管显示: 【51单片