hdu 5326(基础题) work
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相关推荐
- 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 ...
- kruskal 基础题 hdu1102,hdu1233,hdu1863,hdu1875,hdu1879,hdu3371
下面的题都是 kruskal 基础题 hdu1102,hdu1233,hdu1863,hdu1875,hdu1879,hdu3371 hdu1102 #include <iostream> ...
- python代码基础题-python第一部分基础题1-80题
各位Python的第一部分1-80道基础题已经整理好了,希望面试的时候能用的上. 1.为什么学习Python? Python是目前市面上,我个人认为是最简洁.最优雅.最有前途.最全能的编程语言,没有之 ...
- python代码基础题-python每日经典算法题5(基础题)+1(中难题)
现在,越来越多的公司面试以及考验面试对算法要求都提高了一个层次,从现在,我讲每日抽出时间进行5+1算法题讲解,5是指基础题,1是指1道中等偏难.希望能够让大家熟练掌握python的语法结构已经一些高级 ...
- linux面试题-基础题1
linux面试题-基础题1 第1章 基础题1 1.1 在装系统创建Linux分区时,一般至少需要创建两个分区( ) A.FAT.NTFS B. /usr.swap C. /boot.swap ...
- 思科面试题c语言,C语言面试题~总汇(基础题、嵌入式、微软、华为、思科……).doc...
| 基本C语言基础题 1 ? .? 用预处理指令#define? 声明一个常数,用以表明1 年中有多少秒(忽略闰年问题)? #define? SECONDS_PER_YEAR ? (60 ? *? 6 ...
- 微型计算机最早提出于,计算机基础题1、世界上第一台电子计算机诞生于A)1943年B-查字典问答网...
计算机基础题 1.世界上第一台电子计算机诞生于 A)1943年B)1946年 C)1945年D)1949年 2.世界上公认的第一台电子计算机的逻辑元件是 A)继电器B)晶体管 C)电子管D)集成电路 ...
- python基础题面试_python常见面试题
面试自动化会遇到的面试题,分享一波,就不排版了,多多见谅. 先上几道编程题 001 求数值以内的质数,合数及个数 #质数 defzhishu(number): num=0for i in range( ...
- [基础题] * 9.(*)设计一个Student接口,以一维数组存储一个班级的学生姓名。
/*[基础题] * 9.(*)设计一个Student接口,以一维数组存储一个班级的学生姓名. * 该接口中有一个抽象方法getStudentName(). * 设计一个类Union,该类实现接口 ...
最新文章
- 一个线程中lock用法的经典实例
- windbg调试实例(4)--句柄泄露
- 让vue-router渲染为指定的标签
- Python-统计svn变更代码行数
- 费解 | 为什么很多程序员工作时都戴耳机?
- SendMessage 循环按1 到6 F1到F8_2
- html图片自动循环轮播图,js实现图片无缝循环轮播
- Socket api接口--Send(),Recv()的长度问题
- Python3文本读写操作
- pandas 替换数字列中的字符串
- elk,centos7,filebeat,elasticsearch-head集成搭建
- enum ordinal java_Java中怎样由枚举常量的ordinal值获得枚举常量对象
- 【数字信号】基于matlab GUI DTMF信号生成与检测(带按键音)【含Matlab源码 1086期】
- klwp主题大全_klwp主题包百度网盘版下载-klwp主题包百度云版_5577安卓网
- 人工智能重新定义管理
- 《知行合一王阳明》阅读心得
- 算法实现- 数字转金额大写
- 2021年中国地质灾害发生数量、伤亡人员及避免情况分析[图]
- 自研代码率超70%,国产大数据基础软件第一股星环科技成功上市!
- Linux —— chown -R mysql:mysql ./及chown详解
热门文章
- INTERSPEECH2020大会收录了哪些论文?
- Tensorflow动态seq2seq使用总结
- 多线程共享java_java多线程之共享资源
- getvod.php_音视频播放_PHP SDK_服务端SDK_视频点播 - 阿里云
- php 生成腾讯云签名方法,PHP生成腾讯云COS接口需要的请求签名的相关内容
- 狼道:强者的成人礼(第2版)
- 2小时c++与ros教学
- 数据库数据类型、常见约束、系统结构的基本知识总结(SQL、DML、DQL、DCL、DTL)
- vscode 本地调试和本地服务
- [Android]BaseExpandableListAdapter实现可折叠列表