题解报告:hdu 2647 Reward(拓扑排序)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2647
Problem Description
译文:蒲公英的叔叔是工厂的老板。随着春节的到来,他想分发奖励给他的工人。现在他在分配奖励方面遇到了麻烦。工人们会比较他们的奖励,有些人可能会要求分配奖励,就像a's奖励超过b's一样.Dandelion的不克不及要满足所有的要求,当然他想用最少的钱。每件作品的奖励将至少为888,因为这是一个幸运数字。
Input
then m lines ,each line contains two integers a and b ,stands for a's reward should be more than b's.
然后是m行,每行包含两个整数a和b,代表a的奖励应该是比b要多。
Output
Sample Input
Sample Output
1 #include<bits/stdc++.h> 2 using namespace std; 3 const int maxn=10010; 4 vector<int> vec[maxn];//邻接表,每个节点保存与它相连的边的另一个端点 5 queue<int> que; 6 int n,m,u,v,InDeg[maxn],cnt[maxn];//记录每个节点的入度,cnt记录每个节点该得到的奖励 7 bool topsort(){ 8 int num=0; 9 for(int i=1;i<=n;++i)if(!InDeg[i])que.push(i);//预处理,先将入度为0的节点编号入队 10 while(!que.empty()){ 11 int now=que.front();que.pop();num++; 12 for(unsigned int i=0;i<vec[now].size();++i){ 13 if(--InDeg[vec[now][i]]==0)que.push(vec[now][i]); 14 cnt[vec[now][i]]=cnt[now]+1;//只需比出队元素奖励多1即可 15 } 16 } 17 if(num==n)return true;//满足条件的话返回1 18 else return false; 19 } 20 int main() 21 { 22 while(cin>>n>>m){ 23 for(int i=1;i<=n;++i)vec[i].clear();//全部清空 24 memset(InDeg,0,sizeof(InDeg));//全部顶点的度清0 25 memset(cnt,0,sizeof(cnt)); 26 while(m--){ 27 cin>>u>>v; 28 vec[v].push_back(u);//v指向u 29 InDeg[u]++;//u的入度加1 30 } 31 if(topsort()){ 32 int sum=0; 33 for(int i=1;i<=n;++i)sum+=cnt[i]; 34 cout<<(sum+888*n)<<endl; 35 } 36 else cout<<"-1"<<endl; 37 } 38 return 0; 39 }
转载于:https://www.cnblogs.com/acgoto/p/9091656.html
题解报告:hdu 2647 Reward(拓扑排序)相关推荐
- HDU 2647 Reward (拓扑排序)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2647 题意是给你n点m条有向边,叶子点(出度为0)上的值为888,父亲点为888+1,依次计算... ...
- HDU 2647 Reward 拓扑排序
http://acm.hdu.edu.cn/showproblem.php?pid=2647 题意: 输入N和M代表N个人和M组数据,M组数据中的A和B代表A的工资要比B的工资高,底薪是(888元), ...
- hdu 5438 Ponds 拓扑排序
Ponds Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/contests/contest_showproblem ...
- hdu 4857 逃生 拓扑排序
逃生 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=4857 Description 糟糕的事情发生啦,现在大家都忙着逃命.但是逃命的通道很窄,大家只 ...
- Hdu - 2647 - Reward
上题目 Reward Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- HDU 4857 逃生 拓扑排序好题 第一次做CLJ出的题
逃生 Problem Description 糟糕的事情发生啦,现在大家都忙着逃命.但是逃命的通道很窄,大家只能排成一行. 现在有n个人,从1标号到n.同时有一些奇怪的约束条件,每个都形如:a必须在b ...
- C++解题报告:病毒(virus)——拓扑排序
题目描述 有一天,小y突然发现自己的计算机感染了一种病毒!还好,小y发现这种病毒很弱,只是会把文档中的所有字母替换成其它字母,但并不改变顺序,也不会增加和删除字母. 现在怎么恢复原来的文档呢!小y很聪 ...
- cdoj916-方老师的分身 III 【拓扑排序】
http://acm.uestc.edu.cn/#/problem/show/916 方老师的分身 III Time Limit: 3000/1000MS (Java/Others) Memo ...
- 【LeetCode】拓扑排序
[207] Course Schedule 排课问题,n门课排课,有的课程必须在另外一些课程之前上,问能不能排出来顺序. 题解:裸的拓扑排序.参考代码见算法竞赛入门指南这本书. 1 class Sol ...
- 题解报告:hihoCoder #1175:拓扑排序·二
题目链接:https://hihocoder.com/problemset/problem/1175 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho所在学 ...
最新文章
- 原创 | CRUD更要知道的Spring事务传播机制
- tensorflow 集成开发环境 (IDE)
- numa节点_极致性能(1):以NUMA为起点
- ORA-01092解决一例
- Sublime text3 修改字体和行间距
- SpringMVC显示上传文件
- Arduino 例程编译错误 error: unknown type name uint_farptr_t did you mean uint_fast8_t
- 股市基础知识、主力战法【一】
- NetBeans IDE教程
- 怎么做二维码?二维码制作的简单方法
- 【C语言程序设计】C语言求最小公倍数(详解版)!
- Java语言基础(常见对象3(数组排序(冒泡排序、选择排序、直接插入排序、快速排序、归并排序)、Arrays、基本数据类型包装类、Integer类、自动拆箱、自动装箱))
- 每日持续签到,累计签到,送积分
- 提高期英语学习——第二次罗塞塔
- win10系统打开更新服务器失败怎么回事,如何修复Windows Update组件以解决Win10无法自动更新的问题?...
- c#窗体编辑个人简历_C#开发工程师完整简历范文
- 产品经理在路上之二——用户/行业调研
- VMware Photon OS安装配置
- Xmemcached failure stand by
- 大型ERP系统在线体验账号
热门文章
- 2019区块链将走向何方?硅谷知名投资大咖如是说
- 群晖系统ftp服务器,群晖对接云服务器ftp
- Linux查看mpp数据库地址,linux下打开.mpp文件(微软project)._操作系统_rainysia的专栏-CSDN博客...
- php-screw 安装,PHP_SCREW安装
- win10系统中如何查看wifi密码
- 计算机二级excel设置宏,Excel2013中为宏指定快捷键的方法
- 软考答题卡如何填写,这些你都清楚吗?
- 业务流程图(TFD)实例
- 废弃台式计算机类别,废旧台式电脑(台式机)属于什么垃圾分类?
- 零基础CSS入门教程(30)–CSS布局实例