奖金

ssl 1325

题目大意:

有n个人,某个人要比另外一个人的工资高(工资最低为100,最少多1元),问最少发多少工资

原题:

题目描述

由于无敌的凡凡在2005年世界英俊帅气男总决选中胜出,Yali Company总经理Mr.Z心情好,决定给每位员工发奖金。公司决定以每个人本年在公司的贡献为标准来计算他们得到奖金的多少。
于是Mr.Z下令召开m方会谈。每位参加会谈的代表提出了自己的意见:“我认为员工a的奖金应该比b高!”Mr.Z决定要找出一种奖金方案,满足各位代表的意见,且同时使得总奖金数最少。每位员工奖金最少为100元。

输入

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

输出

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

输出样例

2 1
1 2

输入样例

201

数据范围:

80%的数据满足n<=1000,m<=2000;
100%的数据满足n<=10000,m<=20000。

解题思路:

这就是拓扑排序,先按顺序拓扑排序一遍,中途顺便DP(以100为低值),因为要求最小所以一定是上一个数+1,然后有多个条件是就要求最大的

代码:

#include<queue>
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int n,m,x,y,h,tot,sum,rd[10500],head[10500],ans[10500];
struct rec
{int to,next;
}a[20500];
void topsort()//拓扑排序
{queue<int>d;for (int i=1;i<=n;++i)if (!rd[i]) d.push(i),ans[i]=100;//入度为0的while(!d.empty()){h=d.front();d.pop();for (int i=head[h];i;i=a[i].next){rd[a[i].to]--;ans[a[i].to]=max(ans[h]+1,ans[a[i].to]);//取最大if (!rd[a[i].to])//入度为0{rd[a[i].to]--;d.push(a[i].to);}}}
}
int main()
{scanf("%d %d",&n,&m);for (int i=1;i<=m;++i){scanf("%d %d",&x,&y);a[++tot].to=x;a[tot].next=head[y];head[y]=tot;rd[x]++;}topsort();for (int i=1;i<=n;++i)if (rd[i]<=0) sum+=ans[i];//符合else{sum=-1;//存在环break;}printf("%d",sum);
}

【拓扑排序】【DP】奖金(ssl 1325)相关推荐

  1. [NOIP2017]逛公园 最短路+拓扑排序+dp

    题目描述 给出一张 $n$ 个点 $m$ 条边的有向图,边权为非负整数.求满足路径长度小于等于 $1$ 到 $n$ 最短路 $+k$ 的 $1$ 到 $n$ 的路径条数模 $p$ ,如果有无数条则输出 ...

  2. 【BZOJ-1194】潘多拉的盒子 拓扑排序 + DP

    1194: [HNOI2006]潘多拉的盒子 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 456  Solved: 215 [Submit][St ...

  3. Wannafly挑战赛22 B 字符路径 ( 拓扑排序+dp )

    链接:https://ac.nowcoder.com/acm/contest/160/B 来源:牛客网 题目描述 给一个含n个点m条边的有向无环图(允许重边,点用1到n的整数表示),每条边上有一个字符 ...

  4. [多校联考-西南大学附中]切面包(线段树/概率与期望)+ Slow Path Finding Algorithm(拓扑排序/DP)+ 分数转化(数论)

    文章目录 T1:分数转换 题目 题解 代码实现 T2:Slow Path Finding Algorithm 题目 题解 代码实现 T3:切面包 题目 题解 代码实现 T1:分数转换 题目 Time ...

  5. 【UVA 437】The Tower of Babylon(拓扑排序+DP,做法)

    [Solution] 接上一篇,在处理有向无环图的最长链问题的时候,可以在做拓扑排序的同时,一边做DP; 设f[i]表示第i个方块作为最上面的最高值; f[y]=max(f[y],f[x]+h[y]) ...

  6. [jzoj 4246] 【五校联考6day2】san {spfa+dfs/spfa+拓扑排序+dp}

    题目 Description 小明经常去N 个地点,其中有些地点之间有直接的无向道路(共M 条这样的道路),可以直接互相到达,这些道路的长短不一.由于小明对这些道路都很熟悉,无论起点和终点在哪里,总能 ...

  7. 【拓扑排序+dp】Hzy's Rabbit Candy

    Hzy's Rabbit Candy 题目描述 Hzy和她的m只兔兔在一个n个点m条边的有向无环图上玩. 为了让兔兔们开心,Hzy带了一些糖.Hzy可以从任何一个点开始,走到任何一个点结束.在这途中, ...

  8. P1983 [NOIP2013 普及组] 车站分级——拓扑排序+dp

    [NOIP2013 普及组] 车站分级 题目描述 一条单向的铁路线上,依次有编号为 $1, 2, -, n $的 $n $个火车站.每个火车站都有一个级别,最低为 111 级.现有若干趟车次在这条线路 ...

  9. P7077-函数调用【拓扑排序,dp】

    正题 题目链接:https://www.luogu.com.cn/problem/P7077 题目大意 有一些函数分为三种 让一个位置的数加上一个数 让所有数乘上一个数 按顺序执行一些函数 然后不会有 ...

  10. [拓扑排序][DP][Tarjan][并查集]JZOJ 4253 QYQ在艾泽拉斯

    Description 在艾泽拉斯的无尽之海里,有着一群不为人知的由各个种族的冒险者统治的岛屿,这些岛屿都很庞大,足以在上面建造许多的城市,城市之间有一些单向道路连接. 有一天,QYQ无意中发现了这些 ...

最新文章

  1. POJ 2752 同一个串的前后串
  2. 在GridView里使用CheckBox
  3. 资源位图android4.2中为什么要高效的处理位图资源
  4. git只提交一张图片_几张图让你彻底弄懂git工作流(三) ——git深入
  5. android 线程安全
  6. 编程工作怎么样手工问号
  7. 被单位开除后,以前的工龄还算吗?
  8. WM 仓库管理T-CODE
  9. →箭头符号大全复制_特殊符号大全,想要那个自己来复制
  10. Leetcode 黄金分割点等级简单
  11. Android碎片化问题
  12. springmvc报The server cannot or will not process the request due to something that is perceived to be
  13. PS---星空名片制作教程
  14. Openstack Kilo安装错误汇总
  15. 华硕飞行堡垒 新机子安装双系统 linux
  16. Git fatal: Authentication failed
  17. ceph-deploy osd activate xxx bluestore ERROR
  18. Google I/O大会相关
  19. 燕窝等物品不得携带入境 具有相关检疫证书和疫苗接种证书的犬、猫等宠物
  20. python爬虫 多线程 爬取网站排行榜上的所有小说

热门文章

  1. 异步清零和同步置数/清零的区别
  2. LeetCode 530二叉搜索树的最小绝对值差-简单
  3. 数字和为sum的方法数-01背包计数问题
  4. 洛谷 P1706 P1036 -小试牛刀
  5. 算法导论第三版第十一章11.1-4
  6. 扫地机器人隔板_【扫地机器人使用】_摘要频道_什么值得买
  7. 偷用计算机作文,偷玩电脑作文500字
  8. mysql递归查询 缓存_MySQL-递归查询方法解析
  9. linux6.5dns装什么,CentOS6.5安装DNS服务
  10. 统计学习笔记(1) 监督学习概论(1)