HDU 2467 Reward 拓扑排序
来源:互联网 发布:汉化软件安卓版下载 编辑:程序博客网 时间:2024/06/11 04:27
题目链接
http://acm.hdu.edu.cn/showproblem.php?pid=2647
题意
某个公司到了年终要发年终奖,老总决定给每个人至少发888元。但是有些人有一些额外的需求,他要求比另外一些员工高,老板希望满足所有人的要求,同时又使得用的钱最少。输出总钱数,如果不能满足所有人的要求,输出-1.
思路
拓扑排序:从出度为0的点开始,给每个点“分层”,每扩展一层基础钱数加1.如果成环了,就不能满足所有人的要求。
#include<cstdio>#include<queue>#include<iostream>#include<vector>#include<map>#include<cstring>#include<string>#include<set>#include<stack>#include<algorithm>#define cle(a) memset(a,0,sizeof(a))#define inf(a) memset(a,0x3f,sizeof(a))#define ll long long#define Rep(i,a,n) for(int i=a;i<=n;i++)using namespace std;#define INF2 9223372036854775807llconst int INF = ( 2e9 ) + 2;const ll maxn = 10010;vector<int> g[maxn];int Out[maxn];struct node{ int u,deep; bool operator < (const node &b)const { return deep>b.deep; }};int topsort(int n){ int ans=0,cur=888; priority_queue<node> q; int cnt=0; for(int i=1;i<=n;i++) if(Out[i]==0) { q.push(node{i,1}); ans+=cur; } while(!q.empty()) { node temp=q.top();q.pop(); int u=temp.u,deep=temp.deep; int tt=cur+deep; for(int i=0,L=g[u].size();i<L;i++) { int v=g[u][i]; Out[v]--; if(Out[v]==0) { ans+=tt; q.push(node{v,deep+1}); } } cnt++; } if(cnt!=n)ans=0; return ans;}int main(){ int n,m; while(~scanf("%d%d",&n,&m)) { for(int i=0;i<=n;i++)g[i].clear(); memset(Out,0,sizeof(Out)); for(int i=0;i<m;i++) { int u,v; scanf("%d%d",&u,&v); g[v].push_back(u); Out[u]++; } int ans=topsort(n); if(ans!=0) cout<<ans<<endl; else cout<<"-1"<<endl; }}
阅读全文
0 0
- HDU 2467 Reward 拓扑排序
- hdu Reward(拓扑排序)
- HDU 2467 Reward(逆拓扑排序)
- hdu 2647 Reward 拓扑排序
- hdu 2647 Reward 拓扑排序
- hdu 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 拓扑排序
- jQ中attr和prop的区别分析
- ios KVC和KVO
- linux 添加静态路由
- 区块链都用哪几种算法?什么是Scrypt算法
- 重温Web开发及技术选型
- HDU 2467 Reward 拓扑排序
- 是时候了解一下Android 8.0 新特性了
- java对象转化为Map
- Java web中使用Log4j记录日志信息
- Python多进程编程
- Spring之AOP
- Java爬虫(一)--工程的构建
- jquery属性过滤选择器[attr=value]、[attr!=value]、[attr^=value]、[attr$=value]、[attr*=value]、[attr|=value]
- Maven构建SpringMVC环境报错“java.lang.ClassNotFoundException: org.springframework.web.servlet. DispatcherSe