BUPT复试专题—统计节点个数(2013)
题目描述
给出一棵有向树,一共有n个节点,如果一个节点的度(入度+出度)不小于它所有儿子以及它父亲的度(如果存在父亲或儿子),那么我们称这个节点为p节点,现在你的任务是统计p节点的个数。
如样例,第一组的p节点为1,2,3;第二组的p节点为0。
输入
第一行为数据组数T。
每组数据第一行为表示树的节点数。
后面的行,每行两个数,代表节点编号和儿子节点的编号。
输出
每组数据输出一行,为一个整数,代表这棵树上p节点的个数。
样例输入
2
5
0 1
1 2
2 3
3 4
3
0 2
0 1
样例输出
3
1
来源
注意此题一个节点的孩子节点不一定最多是两个
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string>
#include<vector>
using namespace std;
struct donser
{
int father;
vector<int> son;
int num;
};
int main()
{
int T;
cin>>T;
while(T--)
{
int num=,j=,cout_num=;
donser tree[];
while(j<)
{
tree[j].father=-;tree[j].num=;
j++;
}
cin>>num;j=num-;
while(j--)
{
int m,n;
cin>>m>>n;
tree[m].son.push_back(n);
tree[m].num++;
tree[n].father=m;
tree[n].num++;
}
for(int i=;i<num;i++)
{
int father=tree[i].father;
int lable=;
int ball=tree[i].num;
while(tree[i].son.size())
{
int sons=tree[i].son.back();
if(tree[sons].num>ball)
lable=;
tree[i].son.pop_back();
}
if((father!=-&&tree[father].num>ball))
lable=;
if(!lable)
cout_num++;
}
cout<<cout_num<<endl; }
return ;
}
BUPT复试专题—统计节点个数(2013)的更多相关文章
- BUPT复试专题—统计时间间隔(2013计院)
题目描述 给出两个时间(24小时制),求第一个时间至少要经过多久才能到达第二个时间.给出的时间一定满足的形式,其中x和y分别代表小时和分钟.0≤x<24,0≤y<60. 输入格式 第一行为 ...
- BUPT复试专题—最值问题(2013计院)
题目描述 给出N个数,求出这N个数中最大值和次大值.注意这里的次大值必须严格小于最大值.输入保证N个数中至少存在两个不同的数. 输入格式 第一行为测试数据的组数T(T≤20).请注意,任意两组测试数据 ...
- BUPT复试专题—统计字母(2008)
题目描述 给定一个只有小写英文字母组成的字符串,串长为n.请你编写程序求出这个字符串中出现次数最多的字母. 输入 输入的第一行为t(0 < t < 10),表示有t组测试用例.对于每组测试 ...
- HDU 5441 Travel(并查集+统计节点个数)
http://acm.hdu.edu.cn/showproblem.php?pid=5441 题意:给出一个图,每条边有一个距离,现在有多个询问,每个询问有一个距离值d,对于每一个询问,计算出有多少点 ...
- BUPT复试专题—中序遍历序列(2013)
题目描述 给出一个序列,判断该序列是不是某二叉搜索树的中序遍历序列,如果是输出"Yes",否则输出"No".一颗带权二叉树是一颗二叉搜索树(二叉排序树),当且仅 ...
- BUPT复试专题—最小距离查询(2013)
题目描述 给定一个由小写字母a到z组成的字符串S,其中第i个字符为S[i](下标从0开始).你需要完成下面两个操作:INSERT c 其中c是一个待输入的字符.你需要在字符串的末尾添加这个字符.保证 ...
- BUPT复试专题—日期(2013)
题目描述 请你计算出第年月日是第X年的第几天.其中,1月1日是第一天,1月2日是第二天,以此类推. 计算时请注意闰年的影响.对于非整百年,年数能整除4是闰年,否则不是闰年:对于整百年,年数能整除400 ...
- BUPT复试专题—字符串转换(2013计院)
题目描述 我们将仅由若干个同一小写字母构成的字符串称之为简单串,例如"aaaa"是一个简单串,而"abcd"则不是简单串.现在给你一个仅由小写字母组成的字符串, ...
- BUPT复试专题—寻找i*j=m的个数(2016)
题目描述 3*3的矩阵内容. 1 2 3 2 4 6 3 6 9 即a[i][j](1<=i<=n,1<=j<=n)=i*j. 问一个这样n*n的矩阵里面,里面m出现的次数. ...
随机推荐
- 蓝牙学习 (8)配对raspberryPi和SensorTag CC2650
在上一篇中,用raspberryPi能够扫描到Ti SensorTag. 但是没有获得更多的数据,并且发现sensor Tag并没有回复scan request. https://blog.csdn. ...
- Shell:命令用户、用户组管理useradd、usermod
文件及内容处理 - useradd.usermod 1. useradd:添加用户 useradd命令的功能说明 useradd 命令用于建立用户帐号.useradd 可用来建立用户帐号.帐号建好之后 ...
- (转)WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
[root@bak1 bak]# scp gwsyj.sql.gz root@192.168.21.65:/data/dbdata/ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ...
- 不同深度的图片转换cvConvertScale
不同深度图像的转换:要注意范围比如IPL_DEPTH_8U 转到 IPL_DEPTH_32U要用cvConvertScale(pImg8, pImg32, 1.0/255, 0); 要除255反过来I ...
- GitHub中国区前100名到底是什么样的人?(转载)
本文根据Github公开API,抓取了地址显示China的用户,根据粉丝关注做了一个排名,分析前一百名的用户属性,剖析这些活跃在技术社区的牛人到底是何许人也!后续会根据我的一些经验出品<技术人员 ...
- Leetcode 322.零钱兑换
零钱兑换 给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬币组合能组成总金额,返回 -1. 示例 1: 输入: co ...
- ffmpeg常见名词解析
scan_all_pmts, 扫描全部的ts流的"Program Map Table"表.
- JavaScript onload
The onload event occurs immediately after a page or an image is loaded.onload事件当一个页面或是一张图片加载完成时被触发. ...
- 新一代 javascript 模板引擎
artTemplate-3.0 新一代 javascript 模板引擎 <!DOCTYPE html> <html lang="en"> <head& ...
- Oracle 查看 使用 UNDO 段的事务脚本
查看oracle undo segment段的信息: SELECT T1.USN, T2.NAME, T1.STATUS, T1.LATCH, T1.EXTENTS, T1.WRAPS, T1.EXT ...