hdu 5695 Gym Class
来源:互联网 发布:编程电脑配置 编辑:程序博客网 时间:2024/06/16 16:05
http://acm.hdu.edu.cn/showproblem.php?pid=5695
用拓扑排序将初始关系排好,再用优先队列来将大的尽量放到前面。
#include <iostream>#include <stdio.h>#include <string.h>#include <algorithM>#include <cmath>#include <queue>#include <list>#include <vector>using namespace std;int m,n;int rudu[111111];priority_queue<int>q;vector<int>v[111111];int vis[111111];int b[111111];int main(){int t;cin>>t; while(t--) { scanf("%d%d",&n,&m); int i; for(i=1;i<=n;i++) { v[i].clear(); vis[i]=0; } memset(rudu,0,sizeof(rudu)); for(i=1;i<=m;i++) { int a,b; scanf("%d%d",&a,&b); rudu[b]++; v[a].push_back(b); } for(i=1;i<=n;i++) { if(rudu[i]==0) { q.push(i); vis[i]=1; } } long long sum=0; int minn=n; int z=0; while(!q.empty()) { int k=q.top(); b[z++]=k; q.pop(); int ss=v[k].size(); for(i=0;i<ss;i++) { int y=v[k][i]; rudu[y]--; if(!rudu[y]&&!vis[y]) { q.push(y); vis[y]=1; } } } for(i=0;i<n;i++) { if(minn>b[i]) { minn=b[i];}sum+=minn; } cout<<sum<<endl; } return 0;}
阅读全文
0 0
- HDU 5695 Gym Class
- hdu 5695 Gym Class
- HDU 5695 Gym Class
- HDU 5695 Gym Class
- 【HDU 5695 Gym Class】
- HDU 5695 Gym Class
- hdu 5695 Gym Class
- HDU 5695 Gym Class(拓扑排序)
- 拓扑 hdu 5695(Gym Class)
- 【HDU】5695 - Gym Class(拓扑)
- HDU-5695 Gym Class(拓扑排序)
- HDU 5695 Gym Class 拓扑排序
- HDU 5695 Gym Class 拓扑排序
- Gym Class HDU
- HDU-5695-Gym Class(拓扑排序+优先队列)
- hdu 5695 Gym Class【拓扑排序+优先队列】
- HDU 5695 Gym Class (拓扑排序+优先队列)
- HDU 5695 Gym Class(拓扑排序、优先队列)
- SSM框架实战系列之二_Maven之一
- HTML:使用列表
- CodeForces
- 事件监听
- http协议中的请求与响应
- hdu 5695 Gym Class
- Stk APP中广播来源
- RelativeLayout 原理浅析
- ubuntu由于安装搜狗拼音导致的黑屏(或屏幕显示异常)
- java并发编程学习12--并发数据结构简介
- java zTree异步加载实战
- 地牢逃脱
- 一句话理解权重正则化避免过拟合
- poj 3255 Roadblocks