计蒜客-子树结点个数
来源:互联网 发布:java属性签名是什么 编辑:程序博客网 时间:2024/06/05 05:41
相当于上一题的子问题
dfs即可
有一个棵树,树上有 nn 个结点。结点的编号分别为 1 \ldots n1…n,其中 11 是树的根结点。现在希望你帮忙计算每个结点作为根结点的子树分别有多少结点。
输入格式
第一行输入一个数字 nn,代表树上结点的个数。(2 \leq n \leq 10002≤n≤1000)接下来的 n-1n−1 行,每行俩个数字 aa,bb,代表结点 aa 到结点 bb 有一条边。
输出格式
按编号顺序输出每个结点作为根结点的子树,分别有多少结点,中间用空格分开。
样例输入
5
1 4
1 3
3 2
3 5
样例输出
5 1 3 1 1
#include<bits/stdc++.h>using namespace std;struct edge{ int v,next;}e[2007];int size[1007],p[1007],fa[1007],vst[1007],eid=0;void ins(int x,int y){ e[++eid].v=y; e[eid].next=p[x]; p[x]=eid;}void ins2(int x,int y){ ins(x,y); ins(y,x);}void dfs(int x){ size[x]=1; for(int i=p[x];i;i=e[i].next){ if(e[i].v!=fa[x]){ fa[e[i].v]=x; dfs(e[i].v); size[x]+=size[e[i].v]; } }}int main(){ int n; scanf("%d",&n); int x,y; for(int i=1;i<n;i++){ scanf("%d%d",&x,&y); ins2(x,y); } dfs(1); for(int i=1;i<n;i++) cout<<size[i]<<' '; cout<<size[n]; return 0;}
阅读全文
0 0
- 计蒜客-子树结点个数
- POJ1655树的重心 问删除哪个点,使余下的各个子树结点个数的最大值最小.
- 求一棵无根树的不同子树个数
- 求叶子结点个数
- 求单链表结点个数
- hdu5326 树的子树节点个数 dfs
- 面试题84:结点和最大的子树
- 子树
- 子树
- 子树
- 子树
- 子树
- 子树
- 子树
- 子树
- 子树
- 子树
- 子树
- springmvc静态资源解析异常的问题
- Python selenium自动化识别验证码模拟登录操作(二)
- Promise在工作中常用的几种示例
- 使用ES6语法进行Base64的编码和解码
- Qt中路径问题小结
- 计蒜客-子树结点个数
- Javascript学习笔记(String对象)
- stm32_013_STM32printf()函数重定向到串口
- Spring Cloud(五)断路器监控(Hystrix Dashboard)
- IBM-UK ftp资料站
- 【概率论与数理统计】-排列组合笔试题汇总
- Hadoop本地模式、伪分布模式的安装
- React 虚拟dom是如何实现的
- Slim研读笔记五之依赖注入容器(下)