HDU 2647 Reward(拓扑排序)
来源:互联网 发布:淘宝象印官方旗舰店 编辑:程序博客网 时间:2024/04/23 16:02
题意:老板要给N个员工发工资,要求每个人最少888块且要满足M个要求.比如1号员工的工资要比2号员工的工资多.老板准备满足所有要求且最终发的奖金总数要最少.如果可行输出总数,不可行输出-1.
思路:就是将工资拓扑排序,注意的是输入的时候添加边要添加反向边。
#include <cstdio>#include <queue>#include <cstring>#include <iostream>#include <cstdlib>#include <algorithm>#include <vector>#include <map>#include <string>#include <set>#include <ctime>#include <cmath>#include <cctype>using namespace std;#define maxn 50005#define LL long longint cas=1,T;int n,m;vector<int>G[maxn];int in[maxn];int money[maxn];int sum;bool topo(){queue<int>q;for (int i = 1;i<=n;i++)if (in[i]==0)q.push(i);sum = 0;int ans = 0;while (!q.empty()){int u = q.front();q.pop();sum+=money[u];ans++;for (int i = 0;i<G[u].size();i++){int v = G[u][i];if (--in[v]==0){q.push(v); money[v]=money[u]+1;}}}return ans == n;}int main(){while (scanf("%d%d",&n,&m)!=EOF){memset(in,0,sizeof(in));memset(money,0,sizeof(money));for (int i = 1;i<=n;i++)G[i].clear();for (int i = 1;i<=n;i++)money[i]=888;while (m--){int a,b;scanf("%d%d",&a,&b);G[b].push_back(a);in[a]++;}if (topo()){ printf("%d\n",sum);}elseprintf("-1\n");}//freopen("in","r",stdin);//scanf("%d",&T);//printf("time=%.3lf",(double)clock()/CLOCKS_PER_SEC);return 0;}
0 0
- hdu 2647 Reward 拓扑排序
- hdu 2647 Reward 拓扑排序
- hdu 2647 Reward 拓扑排序
- hdu 2647 Reward 拓扑排序
- HDU 2647 Reward(拓扑排序)
- 【HDU】2647 Reward 拓扑排序
- hdu 2647 Reward 拓扑排序
- hdu 2647 Reward 拓扑排序。
- hdu 2647 Reward 拓扑排序
- HDU 2647--Reward【拓扑排序】
- hdu 2647 Reward(拓扑排序)
- HDU 2647 Reward(拓扑排序)
- #HDU 2647 Reward 【拓扑排序】
- hdu 2647 Reward 拓扑排序
- hdu 2647 Reward【拓扑排序】
- HDU 2647 Reward【拓扑排序】
- hdu 2647 Reward(拓扑排序)
- HDU 2647Reward(拓扑排序)
- 关于getline
- 走过2015,展望2016
- 安卓开发——DisplayMetrics类
- FZUOJ 1402 猪的安家 (中国剩余定理 互质)
- 每个痛苦的过程都是你进步的阶梯
- HDU 2647 Reward(拓扑排序)
- 初来乍到,发博一篇,关于Fortran和Matlab
- 331. Verify Preorder Serialization of a Binary Tree
- Maven学习 (六) 搭建多模块企业级项目
- Fragment使用(二)
- 【Android开发小记--6】动画--属性动画以及Fragment切换动画(3D)
- 【连通分量】BZOJ 1051:[HAOI2006]受欢迎的牛
- 【RxJava】Observable基本方法
- HDOJ 1224 Free DIY Tour (Floyd + 打印路径)