首页 > 其他分享 >TZOJ 5795: 奖金 拓扑排序

TZOJ 5795: 奖金 拓扑排序

时间:2023-03-15 18:23:34浏览次数:39  
标签:10001 int 拓扑 tot 员工 奖金 5795 Mr TZOJ

描述

 

 

由于无敌的凡凡在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 #include<bits/stdc++.h>
 2 using namespace std;
 3 int a[10001][301],into[10001],ans[10001],m,n,money;
 4 void init()
 5 {
 6     int i,x,y;
 7     cin>>n>>m;
 8     for(int i=1;i<=m;i++)
 9     {
10         cin>>x>>y;
11         a[y][0]++; //由y引出边的数目 
12         a[y][a[y][0]] = x; //由ay0引出边的顶点 
13         into[x]++; //x的入度+1 
14     }
15 }
16 bool topsort()
17 {
18     int t,tot,k,i,j;
19     tot = 0;k = 0;
20     while(tot<n) //当顶点个数没满n
21     {
22         t = 0; //用来判断有无环 
23         for(int i=1;i<=n;i++)
24             if(into[i]==0) // 将入度0的点入栈 
25             {
26                 tot++;t++;money+=100;
27                 ans[t] = i;
28                 into[i] = 0xffffff; //设第i个点的入度为无限大,避免再次入栈 
29             }
30         if(t==0)return 0;//存在环
31         money+=k*t;k++; //最少要准备的钱
32         for(i=1;i<=t;i++) //去掉相连的边,或者说去掉之前入度为0入栈的点 
33         {
34             for(j=1;j<=a[ans[i]][0];j++) //要遍历第ans[i]个点的相连点的入度-1
35             {
36                 into[a[ans[i]][j]]--;
37             } 
38         } 
39     }
40     return 1; 
41 }
42 int main()
43 {
44     init();
45     money = 0;
46     if(topsort())cout<<money;
47     else cout<<"Poor Xed";
48      return 0;
49 }

 

标签:10001,int,拓扑,tot,员工,奖金,5795,Mr,TZOJ
From: https://www.cnblogs.com/jyssh/p/17219520.html

相关文章

  • TZOJ 7690: 家谱树 拓扑排序
    描述 有个人的家族很大,辈分关系很混乱,请你帮整理一下这种关系。给出每个人的孩子的信息。输出一个序列,使得每个人的后辈都比那个人后列出。 输入 第1行一个......
  • TZOJ 5788: 最优布线问题 最小生成树
    描述  学校有n台计算机,为了方便数据传输,现要将它们用数据线连接起来。两台计算机被连接是指它们有数据线连接。由于计算机所处的位置不同,因此不同的两台计算机的连接......
  • TZOJ 5784: 团伙 并查集
    描述 在某城市里住着n个人,任何两个认识的人不是朋友就是敌人,而且满足:1、我朋友的朋友是我的朋友;2、我敌人的敌人是我的朋友;所有是朋友的人组成一个团伙。告诉你关于......
  • 拓扑排序
      拓扑排序的核心就是找入度为零的点,然后把于该点相连接的边去掉,同时更新剩余点的入度,由于n可能很大,需要邻接表,(这里用vector模拟),也可以学习链式向前星。点击查看代......
  • TZOJ 3196: 看病要排队 优先队列
    描述看病要排队这个是地球人都知道的常识。不过经过细心的0068的观察,他发现了医院里排队还是有讲究的。0068所去的医院有三个医生(汗,这么少)同时看病。而看病的人病情有轻......
  • 三种拓扑的对比以及共性基础问题
    对于电感设计而言,最恶劣的电压定义为峰值电流达到最大值时所对应的输入电压,这是一般电感设计的基础,1.改变电感值是不会影响Idc2.改变开关电源频率是不会影响Idc的3.......
  • 拓扑排序的妙用
    拓扑排序的妙用 F-EndlessWalk题意:给定一个有向图,和一个条件:从某个点出发,能无限前进。问满足条件的点的个数。分析:环上的点和能进入环的道路上的点符合无限前进的......
  • TZOJ 4767: 二叉树遍历
    描述  给定一颗二叉树,要求输出对二叉树进行先序和后序遍历所得到的序列。本题假设二叉树的结点数不超过1000。  输入  输入数据分为多组,第一行是测试数......
  • G - Longest Path -- 拓扑序 + DP
    G-LongestPathhttps://atcoder.jp/contests/dp/tasks/dp_g 思路使用拓扑序,依此从入度为0的节点开始,向外扩展,直至只剩一个节点扩展的过程中,对每个点的最大路径做......
  • CF1463E. Plan of Lectures(拓扑排序+缩点)——Educational Codeforces Round 100 (Rate
    目录题意思路代码参考题意条件1:给定一颗树,每个结点必须在父节点之后出现条件2:给定k个特殊点对u,v,u的下一个结点必须是v现在要求出满足上述两个条件结点序列(每个结点有......