hdu 2647 Reward(拓扑排序,反着来)
2016-07-24 11:37
399 查看
Reward
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)Total Submission(s) : 51 Accepted Submission(s) : 21
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
Dandelion's uncle is a boss of a factory. As the spring festival is coming , he wants to distribute rewards to his workers. Now he has a trouble about how to distribute the rewards.The workers will compare their rewards ,and some one may have demands of the distributing of rewards ,just like a's reward should more than b's.Dandelion's unclue wants to fulfill all the demands, of course ,he wants to use the least money.Every work's reward will be at least 888 , because it's a lucky number.
Input
One line with two integers n and m ,stands for the number of works and the number of demands .(n<=10000,m<=20000)then m lines ,each line contains two integers a and b ,stands for a's reward should be more than b's.
Output
For every case ,print the least money dandelion 's uncle needs to distribute .If it's impossible to fulfill all the works' demands ,print -1.Sample Input
2 1 1 2 2 2 1 2 2 1
Sample Output
1777 -1
#include <iostream> #include<cstdio> #include<cstring> #include<vector> #include<queue> using namespace std; int i,n,m; int a[10002],cnt[10002]; vector<int> s[10002]; long long sum; bool toposort() { queue<int> Q; int num=0; for(int i=1;i<=n;i++) if (cnt[i]==0) {Q.push(i); a[i]=888;} while(!Q.empty()) { int u=Q.front(); num++; Q.pop(); for(int i=0;i<s[u].size();i++) { cnt[s[u][i]]--; if (cnt[s[u][i]]==0) { Q.push(s[u][i]); a[s[u][i]]=max(a[u]+1,a[s[u][i]]); } } } if (num<n) return 0; return 1; } int main() { while(~scanf("%d%d",&n,&m)) { for(i=1;i<=n;i++) s[i].clear(); memset(cnt,0,sizeof(cnt)); for(i=1;i<=m;i++) { int x,y; scanf("%d%d",&y,&x); s[x].push_back(y); cnt[y]++; } memset(a,0,sizeof(a)); if (!toposort()) { printf("-1\n"); continue; } sum=0; for(i=1;i<=n;i++) sum+=a[i]; printf("%lld\n",sum); } return 0; }
相关文章推荐
- 关于Cocos2d-x对象的定义和创建
- 线段树模板
- 引用头文件却找不到相对应的类
- Android Studio实用指南
- poj 2403 简单并查集
- Android中处理崩溃异常 Android捕获全局异常信息并实现上传
- AE使用Cursor查询时遇到的问题0x8004020A
- CPOS链路的一些名堂
- css3渐变
- Win7如何解决telnet不是内部或外部命令的方案!
- Java 反射 调用私有域和方法(setAccessible)
- CCTYPE函数系列
- android studio 里面怎么把一个普通的module变为library类型的,
- Java中的访问权限和命名规范
- Quartz2D的简单使用概述(三)
- 即使是没有结果的爱恋,我依然会选择你
- Unity 解析Json字符串
- 最容易读进去的深度学习科普贴
- Android Apache common ftp开源库以及http区别分析
- 痴情只为无情苦,我欲真心对人 却成了种错情根,人活在世上 究竟是为了什么