博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P3884 [JLOI2009]二叉树问题
阅读量:5291 次
发布时间:2019-06-14

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

题目描述

如下图所示的一棵二叉树的深度、宽度及结点间距离分别为:

深度:4 宽度:4(同一层最多结点个数)

结点间距离: ⑧→⑥为8 (3×2+2=8)

⑥→⑦为3 (1×2+1=3)

注:结点间距离的定义:由结点向根方向(上行方向)时的边数×2,

与由根向叶结点方向(下行方向)时的边数之和。

输入输出格式

输入格式:

 

输入文件第一行为一个整数n(1≤n≤100),表示二叉树结点个数。接下来的n-1行,表示从结点x到结点y(约定根结点为1),最后一行两个整数u、v,表示求从结点u到结点v的距离。

 

输出格式:

 

三个数,每个数占一行,依次表示给定二叉树的深度、宽度及结点u到结点v间距离。

 

输入输出样例

输入样例#1: 
10                                1 2                            1 3                            2 42 53 63 75 85 96 108 6
输出样例#1: 
448
#include
#include
#include
#include
#include
#include
using namespace std;int n,tot;struct edge{ int to; int next;}e[51];int head[101],deep[101],fa[101],size[101],son[101],top[101];int sum[101];inline void add(int x,int y){ e[++tot].to=y; e[tot].next=head[x]; head[x]=tot;}void dfs1(int now,int f,int deeep){//dfs1的目的是确定树的基础信息 deep[now]=deeep; fa[now]=f; size[now]=1; int maxson=-1; for(int i=head[now];i;i=e[i].next){ int y=e[i].to; if(y==f) continue; dfs1(y,now,deeep+1); size[now]+=size[y]; if(size[y]>maxson) maxson=size[y],son[now]=y;//记录重儿子 }}void dfs2(int x,int topf){//dfs2的目的是划分轻重链 top[x]=topf; if(!son[x]) return ; dfs2(son[x],topf); for(int i=head[x];i;i=e[i].next){ int y=e[i].to; if(y==fa[x]||y==son[x]) continue; dfs2(y,y); }} inline int lca(int x,int y){//树剖求LCA while(top[x]!=top[y]){//只要不在同一重链上 if(deep[top[x]]
deep[y]) swap(x,y);//深度较小的就是LCA return x;}int main(){ scanf("%d",&n); for(int i=1;i

 

转载于:https://www.cnblogs.com/xiongchongwen/p/11236288.html

你可能感兴趣的文章
2018-2019-2 20175224 实验一《Java开发环境的熟悉》实验报告
查看>>
元素的offsetParent offsetLeft offsetTop属性
查看>>
NOI2015
查看>>
生成器表达式
查看>>
第三天运算符--三元操作符
查看>>
C#学习笔记-输入数据判断(int、double、string)
查看>>
uva 10881
查看>>
ubuntu node.js Binaries方式安装(二进制文件安装)
查看>>
Ansible Ad-Hoc Commands
查看>>
sql 修改字段小记
查看>>
现代浏览器的工作原理
查看>>
完美CSS文档的8个最佳实践
查看>>
扒一扒.NET Core的环境配置提供程序
查看>>
python基础之ATM-2
查看>>
《20170926-构建之法:现代软件工程-阅读笔记》
查看>>
js中for循环闭包问题记录
查看>>
关于xxx.h file not found 的问题
查看>>
CS224n学习资源汇总
查看>>
部署web Service到tomcat
查看>>
java使用sax解析xml
查看>>