1352:【例4-13】奖金

简介: 1352:【例4-13】奖金

1352:【例4-13】奖金

时间限制: 1000 ms         内存限制: 65536 KB

【题目描述】

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

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

【输入】

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

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

【输出】

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

【输入样例】

2 1

1 2

【输出样例】

201

【提示】

【数据规模】

80%的数据满足:n≤1000,m≤2000;

100%的数据满足:n≤10000,m≤20000。

1. //示例代码 拓扑排序
2. #include<iostream>
3. using namespace std;
4. 
5. int a[10001][301] = { 0 }; // 邻接表,用于存储图的信息
6. int into[10001]; // 计算每个结点的入度
7. int ans[10001]; // 记录拓扑排序的结果
8. int m, n; // n:图的结点数量,m:图的边数
9. int money; // 统计 Xed 赚取的钱
10. 
11. void init() // 初始化图
12. {
13. int i, x, y;
14.     cin >> n >> m;
15. for (i = 1; i <= m; i++)
16.     {
17.         cin >> x >> y;
18.         a[y][0]++; // 将 y 的出度加一
19.         a[y][a[y][0]] = x; // 将有向边(x,y)加入邻接表中
20.         into[x]++; // 将 x 的入度加一
21.     }
22. }
23. 
24. bool topsort() // 拓扑排序
25. {
26. int t, tot, k, i, j;
27.     tot = 0; k = 0;
28. while (tot < n) // 进行拓扑排序,将排序结果记录在数组 ans 中
29.     {
30.         t = 0; // t: 当前可以被访问的入度为 0 的结点数量
31. for (i = 1; i <= n; i++)
32.         {
33. if (into[i] == 0)
34.             {
35.                 tot++; t++; money += 100; // 访问一个结点需要花费 100 元
36.                 ans[t] = i; // 记录拓扑排序的结果
37.                 into[i] = 0xfffffff; // 将入度设置为一个非常大的数,代表该结点已经被访问过
38.             }
39.         }
40. if (t == 0) return false; // 如果没有入度为 0 的结点,则说明图中存在环,返回 false
41.         money += k * t; k++; // 根据 Xed 的规则计算赚取的钱
42. for (i = 1; i <= t; i++)
43. for (j = 1; j <= a[ans[i]][0]; j++) into[a[ans[i]][j]]--; // 更新拓扑排序中各个结点的入度
44.     }
45. return true;
46. }
47. 
48. int main()
49. {
50. init(); money = 0;
51. if (topsort()) cout << money << endl; // 进行拓扑排序并输出 Xed 赚取的钱
52. else cout << "Poor Xed" << endl;
53. return 0;
54. }


相关文章
|
7月前
|
算法 前端开发
1873. 计算特殊奖金
1873. 计算特殊奖金
40 0
|
3月前
企业发放的奖金根据利润提成
企业发放的奖金根据利润提成。
143 4
wustojc4011计算奖金
wustojc4011计算奖金
51 0
AcWing 610. 工资和奖金
AcWing 610. 工资和奖金
134 0
AcWing 610. 工资和奖金
|
机器学习/深度学习
某销售公司在年末的时候会向员工发放红包,发放的红包金额共有5种,获取的条件各不相同:   1) 五颗星红包,每人8000元,平均月绩效大于80件商品(>80),并且在本年度满勤; 2) 四颗星红包,每
某销售公司在年末的时候会向员工发放红包,发放的红包金额共有5种,获取的条件各不相同:   1) 五颗星红包,每人8000元,平均月绩效大于80件商品(>80),并且在本年度满勤; 2) 四颗星红包,每
237 0
|
数据采集 数据可视化 搜索推荐
【氚云】牛!1000人工资20秒算完!
牛!1000人工资20秒算完!
448 0
【氚云】牛!1000人工资20秒算完!
|
定位技术
为什么不应该根据员工的住所支付工资
  Facebook的薪资决定树立了危险的先例   在我的整个技术职业生涯中,我一直是远程工作的拥护者-碰巧的是,这是从完全远程的演出开始的。 我一直认为,分布式工作模型是一种根本性的破坏性技术,其明显优势将不可避免。   上周,Facebook宣布了一项关于让(一些)员工随处居住的地方,从而引发了长期争议的远程支付争议。 关键问题是如何"公平地"向远程员工付款。 这恰恰是一些基本问题的核心,这些问题使公平报酬成为公司的普遍斗争。   如果削减工资以从旧金山或纽约市撬出更多的技术工作,以便它们可以在其他任何地方使用,那么就这样吧。 即使减薪20%,温斯顿·塞勒姆,杰克逊维尔或小石城的人可
119 0
韩国首尔:给41万小企业主发放现金补助,每人140万韩元
作为首尔市政府为振兴当地经济而采取的最新措施之一,首尔市近41万名受疫情严重打击的小企业主和自雇佣人士每人将获得140万韩元(1140美元)的现金补助。
|
API 定位技术 黑灰产治理
阿里云投了130多万奖金的大赛,你参加不?
第一届 API 大赛,阿里云践行了狭义的 API 经济。第一赛段出现了智能识别植物花卉、智能车辆识别、文档转长图/H5、图片鉴黄等优秀的 API 服务,现已成为阿里云 API 市场的合作伙伴。第二赛段涌现了很多基于 API 服务的优秀解决方案作品。