http://acm.hdu.edu.cn/showproblem.php?pid=5326

一道水题,题目大意是在公司里,给出n个员工和目标人数m,然后下面的n-1行是表示员工a管理b,问在这些员工中有多少管理员工的人数是k

起初想的是并查集,后来发现没那么简单,因为两者之间的关系有方向的,a管理b是单向的从b指到a,所以并查集的一个集合里包含了很多种关系

还需要用一个二维数组表示关系,它是一环扣一环的从a找到b再从b找到c......因为如果b管理c,a又管理b,那么a也管理c

code

 1 #include<cstdio>
 2 #include<cstring>
 3 using namespace std;
 4 int father[101],vis[101][101],num[101];
 5 void jjc(int x)
 6 {
 7
 8     for (int i=1;i<=x;i++)
 9     {
10        father[i]=i;
11        num[i]=0;
12     }
13 }
14 int find(int x)
15 {
16     while (x!=father[x])
17        x=father[x];
18     return father[x];
19 }
20 int main()
21 {
22     int n,m,k,ans,i,j,x,y,sx,sy,q;
23     while (~scanf("%d %d",&n,&q))
24     {
25         m=n-1;
26         memset(vis,0,sizeof(vis));
27         jjc(n);
28         while (m--)
29         {
30             scanf("%d %d",&x,&y);
31             sx=find(x);
32             sy=find(y);
33             if (sx!=sy)
34                father[sy]=sx; //不能反了
35             vis[x][y]=1;
36         }
37         for (k=1;k<=n;k++)
38         {
39             for (i=1;i<=n;i++)
40             {
41                 for (j=1;j<=n;j++)
42                 if (vis[i][k]==1&&vis[k][j]==1)
43                     vis[i][j]=1;
44             }
45         }
46         for (i=1;i<=n;i++)
47         {
48             for (j=1;j<=n;j++)
49             {
50                 if (father[i]==father[j]&&i!=j&&vis[i][j]==1)
51                    num[i]++;
52             }
53         }
54         ans=0;
55         for (i=1;i<=n;i++)
56         {
57            if (num[i]==q)
58               ans++;
59         }
60         printf("%d\n",ans);
61     }
62     return 0;
63 }

还有就是利用搜索的思想递归,放到一个矩阵里面,从第一行开始找代表找1管理的人,找到2,然后在从第二行开始找,代表找2管理的人,同时这个人也是1管理的人,找到了3,再从3开始找...

code

#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
int mapp[101][101];
int n,ans;
void bfs(int x,int y)
{int j=y;while (j<=n){j++;if (mapp[x][j]==0){ans++;bfs(j,j);}}j=y;while (j>=1){j--;if (mapp[x][j]==0){ans++;bfs(j,j);}}
}
int main()
{int m,k,sum,i,x,y,q;while (~scanf("%d %d",&n,&k)){m=n-1;sum=0;memset(mapp,1,sizeof(mapp));while (m--){scanf("%d %d",&x,&y);mapp[x][y]=0;}for (i=1;i<=n;i++){ans=0;bfs(i,i);// printf("%d\n",ans);if (ans==k)sum++;}printf("%d\n",sum);}return 0;
}

转载于:https://www.cnblogs.com/JJCHEHEDA/p/4742443.html

hdu 5326(基础题) work相关推荐

  1. Jam's balance HDU - 5616 (01背包基础题)

    Jim has a balance and N weights. (1≤N≤20) The balance can only tell whether things on different side ...

  2. kruskal 基础题 hdu1102,hdu1233,hdu1863,hdu1875,hdu1879,hdu3371

    下面的题都是 kruskal 基础题 hdu1102,hdu1233,hdu1863,hdu1875,hdu1879,hdu3371 hdu1102 #include <iostream> ...

  3. python代码基础题-python第一部分基础题1-80题

    各位Python的第一部分1-80道基础题已经整理好了,希望面试的时候能用的上. 1.为什么学习Python? Python是目前市面上,我个人认为是最简洁.最优雅.最有前途.最全能的编程语言,没有之 ...

  4. python代码基础题-python每日经典算法题5(基础题)+1(中难题)

    现在,越来越多的公司面试以及考验面试对算法要求都提高了一个层次,从现在,我讲每日抽出时间进行5+1算法题讲解,5是指基础题,1是指1道中等偏难.希望能够让大家熟练掌握python的语法结构已经一些高级 ...

  5. linux面试题-基础题1

    linux面试题-基础题1 第1章 基础题1 1.1 在装系统创建Linux分区时,一般至少需要创建两个分区( ) A.FAT.NTFS   B. /usr.swap    C. /boot.swap ...

  6. 思科面试题c语言,C语言面试题~总汇(基础题、嵌入式、微软、华为、思科……).doc...

    | 基本C语言基础题 1 ? .? 用预处理指令#define? 声明一个常数,用以表明1 年中有多少秒(忽略闰年问题)? #define? SECONDS_PER_YEAR ? (60 ? *? 6 ...

  7. 微型计算机最早提出于,计算机基础题1、世界上第一台电子计算机诞生于A)1943年B-查字典问答网...

    计算机基础题 1.世界上第一台电子计算机诞生于 A)1943年B)1946年 C)1945年D)1949年 2.世界上公认的第一台电子计算机的逻辑元件是 A)继电器B)晶体管 C)电子管D)集成电路 ...

  8. python基础题面试_python常见面试题

    面试自动化会遇到的面试题,分享一波,就不排版了,多多见谅. 先上几道编程题 001 求数值以内的质数,合数及个数 #质数 defzhishu(number): num=0for i in range( ...

  9. [基础题] * 9.(*)设计一个Student接口,以一维数组存储一个班级的学生姓名。

    /*[基础题]  * 9.(*)设计一个Student接口,以一维数组存储一个班级的学生姓名.  * 该接口中有一个抽象方法getStudentName().  * 设计一个类Union,该类实现接口 ...

最新文章

  1. 一个线程中lock用法的经典实例
  2. windbg调试实例(4)--句柄泄露
  3. 让vue-router渲染为指定的标签
  4. Python-统计svn变更代码行数
  5. 费解 | 为什么很多程序员工作时都戴耳机?
  6. SendMessage 循环按1 到6 F1到F8_2
  7. html图片自动循环轮播图,js实现图片无缝循环轮播
  8. Socket api接口--Send(),Recv()的长度问题
  9. Python3文本读写操作
  10. pandas 替换数字列中的字符串
  11. elk,centos7,filebeat,elasticsearch-head集成搭建
  12. enum ordinal java_Java中怎样由枚举常量的ordinal值获得枚举常量对象
  13. 【数字信号】基于matlab GUI DTMF信号生成与检测(带按键音)【含Matlab源码 1086期】
  14. klwp主题大全_klwp主题包百度网盘版下载-klwp主题包百度云版_5577安卓网
  15. 人工智能重新定义管理
  16. 《知行合一王阳明》阅读心得
  17. 算法实现- 数字转金额大写
  18. 2021年中国地质灾害发生数量、伤亡人员及避免情况分析[图]
  19. 自研代码率超70%,国产大数据基础软件第一股星环科技成功上市!
  20. Linux —— chown -R mysql:mysql ./及chown详解

热门文章

  1. INTERSPEECH2020大会收录了哪些论文?
  2. Tensorflow动态seq2seq使用总结
  3. 多线程共享java_java多线程之共享资源
  4. getvod.php_音视频播放_PHP SDK_服务端SDK_视频点播 - 阿里云
  5. php 生成腾讯云签名方法,PHP生成腾讯云COS接口需要的请求签名的相关内容
  6. 狼道:强者的成人礼(第2版)
  7. 2小时c++与ros教学
  8. 数据库数据类型、常见约束、系统结构的基本知识总结(SQL、DML、DQL、DCL、DTL)
  9. vscode 本地调试和本地服务
  10. [Android]BaseExpandableListAdapter实现可折叠列表