首页 > 代码库 > hdu5326 Work
hdu5326 Work
题目链接:点击打开链接
题目大意:有n个人。各自管理不同的人,问有多少人管理k个人。
思路:先记录每一个人的直接上级。然后模拟路径压缩的过程进行计数求和。
#include<stdio.h> #include<string.h> int p[105],sum[105]; void init() { int i; for(i=0;i<105;i++) { p[i]=i; sum[i]=1; } } void findroot(int x) { int r=x; while(r!=p[r]) r=p[r]; int i,j; i=x; while(i!=r) { j=p[i]; sum[p[i]]+=1; // p[i]=r; i=j; //模拟路径压缩过程,注意不要真的进行路径压缩。 } } int main() { int n,k,i,j,a,b; while(scanf("%d%d",&n,&k)!=EOF) { init(); for(i=1;i<n;i++) { scanf("%d%d",&a,&b); if(a!=b) p[b]=a; } for(i=1;i<=n;i++) { findroot(i); } int ans=0; for(i=1;i<=n;i++) { sum[i]--; //printf("%d\n",sum[i]); if(sum[i]==k)ans++; } printf("%d\n",ans); } return 0; }
hdu5326 Work
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。