对并查集中的每一个节点的遍历问题(暴力方法)
来源:互联网 发布:uefi ubuntu 编辑:程序博客网 时间:2024/05/16 01:02
Work(Hdu :5326)
It’s an interesting experience to move from ICPC to work, end my college life and start a brand new journey in company.As is known to all, every stuff in a company has a title, everyone except the boss has a direct leader, and all the relationship forms a tree. If A’s title is higher than B(A is the direct or indirect leader of B), we call it A manages B.Now, give you the relation of a company, can you calculate how many people manage k people.
Input
There are multiple test cases.
Each test case begins with two integers n and k, n indicates the number of stuff of the company.
Each of the following n-1 lines has two integers A and B, means A is the direct leader of B.
1 <= n <= 100 , 0 <= k < n1 <= A, B <= n
Output
For each test case, output the answer as described above.
Sample Input
7 21 21 32 42 53 63 7
Sample Output
2
#include<cstdio>#include<cstring>#include<map>#include<vector>#include<cmath>#include<cstring>#include<iostream>#include<algorithm>#include<queue>#include<deque>#include<stack>using namespace std;int pp[101];int dum=0;int k;int fin(int x)//首先是查找节点的函数,在这里做了一些调整,在函数递归的过程中加入了一个计数器来记录符合条件的节点的出现次数,所以这个计数器定义成全局变量了{ if(x==k) { dum++; } if(x==pp[x]) return x;//其他还是一样 else { return fin(pp[x]);//关键点在这里:这里并没有进行路径压缩,这也是这种方法的弊端之一,就是不能进行路径压缩,应为要完整的保持灭个节点的完整性才能用这个方法一个一个节点的往上找,还好这道题的数据范围不是很大所以不进行路径压缩也不会超时 }}int joi(int x,int y){ int xx=fin(x); int yy=fin(y); if(xx!=yy) pp[y]=x;}int main(){ int n,m; while(scanf("%d%d",&n,&m)==2) { for(int i=0;i<=n;i++) pp[i]=i; for(int i=1;i<n;i++) { int a,b; scanf("%d%d",&a,&b); joi(a,b); } int sum=0; for(k=1;k<=n;k++)//这里就开始暴力扫来匹配节点就行了 { dum=0; for(int j=1;j<=n;j++) { fin(j); } if(dum==m+1) sum++; } printf("%d\n",sum); }}
PS.由于本人智力有限只能想到这种暴力的笨方法,这是一种效率极低的方法,有什么缺点尽管提出
0 0
- 对并查集中的每一个节点的遍历问题(暴力方法)
- poj 1470 Closest Common Ancestors 【并查集 求根 + 求解每一个节点是多少对(a,b)的LCA】
- 如何遍历JTree的每一个节点?
- 遍历集合,判断并添加元素的集中方法
- 并查集中的合并、删除操作
- 并查集中的最小生成树
- 并查集中查的一种优美的写法
- 遍历集合的常见的集中方法
- 遍历Map集合的集中方法
- OC里面的集中数组遍历方法
- OC里面的集中数组遍历方法
- dfs遍历每一个节点
- 简单合并并查集中的子集树
- 图论算法----并查集中的路径压缩
- 图论算法----并查集中的启发式合并
- jQuery遍历节点的方法
- FZU2155 盟国 (并查集的虚拟节点)
- HRBUST 2189 节点的连接 (并查集)
- OFFTIME for Android 断线时间 手机想都别想
- 我理解的多进程,多线程
- linux系统下的快捷方式设置
- SQL语句大全
- Java时间日期格式转换
- 对并查集中的每一个节点的遍历问题(暴力方法)
- FATFS文件系统
- 蓝桥测试1->2015年第六届蓝桥杯省赛
- 1-vi编辑器与编译
- ios在同一个控制器中 动态显示和隐藏状态栏
- 详解js中extend函数
- 函数模板与类模板
- IntPtr是什么,该怎么用?
- 数学分析公式LaTex练习-洛必达法则