4040 EZ系列之奖金

时间限制: 1 s
空间限制: 64000 KB
题目等级 : 钻石 Diamond
 
题目描述 Description

由于无敌的WRN在2015年世界英俊帅气男总决选中胜出,EZ总经理Mr.Lin心情好,决定给每位员工发奖金。EZ决定以每个人本年在EZ的贡献为标准来计算他们得到奖金的多少。

于是Mr.Lin下令召开m方会谈。每位参加会谈的代表提出了自己的意见:“我认为学生a的奖金应该比b高!”Mr.Lin决定要找出一种奖金方案,满足各位代表的意见,且同时使得总奖金数最少。每位学生奖金最少为100元。

输入描述 Input Description

第一行两个整数n,m,表示学生总数和代表数;

以下m行,每行2个整数a,b,表示某个代表认为第a号学生奖金应该比第b号学生高。

输出描述 Output Description

若无法找到合法方案,则输出“-1”;否则输出一个数表示最少总奖金。

样例输入 Sample Input

2 1

1 2

样例输出 Sample Output

201

数据范围及提示 Data Size & Hint

80%的数据满足n<=1000,m<=2000;

100%的数据满足n<=10000,m<=20000。

//T了两个点,我也没办法了,stl,人工栈都过不了

woc,t的原因是数组开小了....不知为什么codevs报t

AC代码:

  1. #include<iostream>
  2. #include<cstdio>
  3. using namespace std;
  4. int top=;
  5. struct sta
  6. {
  7. int sz[];
  8. int topp()
  9. {
  10. return sz[top];
  11. }
  12. void push(int x){
  13. sz[++top]=x;
  14. }
  15. void pop(){
  16. if(top>)
  17. top--;
  18. }
  19. void cl()
  20. {
  21. top=;
  22. }
  23. int size(){
  24. return top;
  25. }
  26. }stack;
  27. struct node{
  28. int u,v,next;
  29. }edge[];
  30. int rd[],head[],son[];int money=,step=,monney[];
  31. int n,m,num=;
  32. void add_edge(int x,int y)
  33. {
  34. edge[num].u=x;
  35. edge[num].v=y;
  36. edge[num].next=head[x];
  37. head[x]=num++;
  38. }
  39. void in()
  40. {
  41. scanf("%d%d",&n,&m);
  42. for(int i=;i<=n;i++)
  43. {
  44. head[i]=-;
  45. monney[i]=;
  46. }
  47. int x,y;
  48. for(int i=;i<=m;i++)
  49. {
  50. scanf("%d%d",&x,&y);
  51. add_edge(y,x);
  52. rd[x]++;
  53. }
  54. }
  55. int sum=;
  56. void topsort()
  57. {
  58. for(int i=;i<=n;i++)
  59. {
  60. if(rd[i]==)
  61. {
  62. stack.push(i);
  63. sum++;
  64. }
  65. }
  66. int step;
  67. while(stack.size()!=)
  68. {
  69. step=stack.topp();
  70. stack.pop();
  71. for(int i=head[step];i!=-;i=edge[i].next)
  72. {
  73.  
  74. if(monney[edge[i].v]<monney[edge[i].u]+)
  75. {
  76. monney[edge[i].v]=monney[edge[i].u]+;
  77. }
  78. rd[edge[i].v]--;
  79. if(rd[edge[i].v]==)
  80. {
  81. stack.push(edge[i].v);
  82. sum++;
  83. }
  84. }
  85. }
  86. if(sum!=n)cout<<"-1";
  87. else
  88. {
  89. for(int i=;i<=n;i++)
  90. money+=monney[i];
  91. cout<<money<<endl;
  92. }
  93. return;
  94. }
  95. int main()
  96. {
  97. in();
  98. topsort();
  99. return ;
  100. }

4040 EZ系列之奖金的更多相关文章

  1. 4040 EZ系列之奖金 (拓扑)

    4040 EZ系列之奖金 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 钻石 Diamond         题目描述 Description 由于无敌的WRN在2015年世界英俊帅 ...

  2. codevs 4028 EZ系列

    4028 EZ系列之愤怒的一天   题目描述 Description 有一天,在某某教学楼某某课室某某课桌旁,某某某大声尖叫起来. 在那一瞬间,勇敢的丁畅大大站了出来,向某某某讨好,结果被揍得半死. ...

  3. 拓扑排序 codevs 4040 cojs 438

    codevs 4040 EZ系列之奖金  时间限制: 1 s  空间限制: 64000 KB  题目等级 : 钻石 Diamond 题目描述 Description 由于无敌的WRN在2015年世界英 ...

  4. codevs 4014EZ系列

    4014 EZ系列之丁畅大大打小怪兽   题目描述 Description 丁畅大大除了喜欢吃鸡腿和番茄炒鸡蛋,还喜欢变成奥特曼去打小怪兽. 有一天,他遇到了迪迦!!!!!!!!!!!!!!!!!!! ...

  5. 精通Web Analytics 2.0 (13) 第十一章:变身分析忍者的指导原则

    精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第十一章:变身分析忍者的指导原则 这个激动人心的一章,分析了几乎所有工作的各个方面. 目标很简单:使用成熟的方法来帮助避免淹死的 ...

  6. Delphi--最强大的开发工具(欢迎转载)

    最强大的开发工具 Delphi 目录 --------------------------------------------------------------------------- 前言 De ...

  7. Spark入门实战系列--4.Spark运行架构

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1. Spark运行架构 1.1 术语定义 lApplication:Spark Appli ...

  8. Spark入门实战系列--6.SparkSQL(上)--SparkSQL简介

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .SparkSQL的发展历程 1.1 Hive and Shark SparkSQL的前身是 ...

  9. Oracle学习系列1-7

    Oracle学习系列1 两个服务必须启动: OracleOraDb10g*TNListener 和 OracleService*** 使用sqlplusw先进行环境的设置 set linesize 3 ...

随机推荐

  1. 【方法】jQuery无插件实现 鼠标拖动切换图片/内容 功能

    前言 我就想随便叨逼叨几句,爱看就看几句,不爱看就直接跳过看正文就好啦~ 这个方法是仿写页面时我自己研究出来,可能有比我更简单的方法. 但我不管,因为我没查我不知道,我就觉得我的最好啦,耶耶耶~ 效果 ...

  2. thinkphp报错Call to undefined method app\index\controller\Index::fetch()

    因为要写一个系统,所以又重新下载了thinkphp,然后安装了一下.回忆起这个问题很容易让新手朋友费解.会出现如下报错:Call to undefined method app\index\contr ...

  3. 使用Cache缓存

    存放位置:服务器内存,用于频繁访问且不轻易更改的内容缓存. string CacheKey = "CT1"; //检索指定项, object objModel = Cache.Ge ...

  4. python网络编程-paramiko

    python基础学习日志day8-paramiko 一:简介 Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 现有这样的需求:需要使用windows客户端,远程连 ...

  5. python并行计算(持续更新)

    工作中需要对tensorflow 的一个predict结果加速,利用python中的线程池 def getPPLs(tester,datas): for line in datas: tester(l ...

  6. [转]python与numpy基础

    来源于:https://github.com/HanXiaoyang/python-and-numpy-tutorial/blob/master/python-numpy-tutorial.ipynb ...

  7. css文字环绕图片--遇到的问题及解决方法

    一.前言 需要实现一个文字环绕图片的效果,心想so easy嘛. 1)代码部分 <style> .img-left { border: 3px solid #005588; width:3 ...

  8. json在线工具

    1.json在线格式化工具 http://www.choujone.com/json/ 2.json在线比较工具 http://tlrobinson.net/projects/javascript-f ...

  9. bzoj 4034(DFS序+线段树)

    这个题多了一个操作难度直线上升,看完题解才会写 有一棵点数为 N 的树,以点 1 为根,且树点有边权.然后有 M 个操作,分为三种:操作 1 :把某个节点 x 的点权增加 a .操作 2 :把某个节点 ...

  10. 一步一步学习IdentityServer3 (8)

    IdentityServer3结合Hangfire及Cookies中间件实现授权 Idr3数据库Token过期管理 GlobalConfiguration.Configuration.UseSqlSe ...