题解报告:hdu 5695 Gym Class(拓扑排序)
题目链接:acm.hdu.edu.cn/showproblem.php?pid=5695
Problem Description
今天,它终于当上了梦寐以求的体育课老师。第一次课上,它发现一个有趣的事情。在上课之前,所有同学要排成一列, 假设最开始每个人有一个唯一的ID,从1到N,在排好队之后,每个同学会找出包括自己在内的前方所有同学的最小ID,作为自己评价这堂课的分数。麻烦的是,有一些同学不希望某个(些)同学排在他(她)前面,在满足这个前提的情况下,新晋体育课老师——度度熊,希望最后的排队结果可以使得所有同学的评价分数和最大。
Input
对于每组数据,第一行输入两个整数N和M(1≤N≤100000,0≤M≤100000),分别表示总人数和某些同学的偏好。
接下来M行,每行两个整数A 和B(1≤A,B≤N),表示ID为A的同学不希望ID为B的同学排在他(她)之前。你可以认为题目保证至少有一种排列方法是符合所有要求的。
Output
Sample Input
Sample Output
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long LL; 4 const int maxn=100005; 5 vector<int> vec[maxn]; 6 priority_queue<int> que;//默认最大堆,id越靠前的最后的评价分数将会是最大的 7 int t,n,m,a,b,minid,InDeg[maxn];LL sum;bool flag; 8 void topsort(){ 9 while(!que.empty())que.pop();//清空队列 10 for(int i=1;i<=n;++i) 11 if(!InDeg[i])que.push(i); 12 flag=false; 13 while(!que.empty()){ 14 int now=que.top();que.pop();//取出当前最大的id,并且出队 15 if(!flag){minid=now;flag=true;}//开关:记录第一个拓扑的id值 16 minid=min(minid,now);sum+=minid;//每次更新最小的id,并且加入到sum当中 17 for(size_t i=0;i<vec[now].size();++i)//更新每个邻接点的入度数 18 if(--InDeg[vec[now][i]]==0)que.push(vec[now][i]); 19 } 20 } 21 int main(){ 22 scanf("%d",&t); 23 while(t--){ 24 scanf("%d%d",&n,&m);sum=0; 25 memset(InDeg,0,sizeof(InDeg)); 26 for(int i=1;i<=n;++i)vec[i].clear();//每个邻接矩阵连接对应清空 27 while(m--){ 28 scanf("%d%d",&a,&b); 29 vec[a].push_back(b);//邻接表:a指向b 30 InDeg[b]++;//b的入度加1 31 } 32 topsort();printf("%lld\n",sum); 33 } 34 return 0; 35 }
转载于:https://www.cnblogs.com/acgoto/p/9313373.html
题解报告:hdu 5695 Gym Class(拓扑排序)相关推荐
- HDU 5695 Gym Class 拓扑排序
Gym Class 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5695 Description 众所周知,度度熊喜欢各类体育活动. 今天,它终于当 ...
- 题解报告:hihoCoder #1175:拓扑排序·二
题目链接:https://hihocoder.com/problemset/problem/1175 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho所在学 ...
- 2016百度之星 - 初赛(Astar Round2A)Gym Class(拓扑排序)
Gym Class Accepts: 849 Submissions: 4247 Time Limit: 6000/1000 MS (Java/Others) Memory Limit: 65 ...
- hdu 4109 Instrction Arrangement 拓扑排序 关键路径
这个算是关键路径的模版题目了,解这个题目之前,首先说下关键路径的含义,传送门(度娘),个人的见解是,关键路径就是木桶的短板问题,比如有一群人约好去某个地方,大家从同一个地方同一时间开始出发,有些人选择 ...
- HDU 4857 逃生(拓扑排序)
拓扑排序 一.定义 对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若<u,v> ∈ ...
- HDU 4857 逃生 【拓扑排序+反向建图+优先队列】
逃生 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission ...
- HDU hdu 2094 产生冠军 拓扑排序 判定环
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2094 对于是否有环,是通过一个N(节点数)的循环来判定.检查并更新每个节点的入度数. 每找到一个入度唯 ...
- HDU 4917 Permutation(拓扑排序 + 状压DP + 组合数)
题目链接 Permutation 题目大意:给出n,和m个关系,每个关系为ai必须排在bi的前面,求符合要求的n的全排列的个数. 数据规模为n <= 40,m <= 20. 直接状压DP空 ...
- hdu 5438 Ponds 拓扑排序
Ponds Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/contests/contest_showproblem ...
最新文章
- mysql 5.5 编译参数_Mysql 5.5 编译参数
- 微生物组-宏基因组分析专题研讨会(2022.5)
- 《剑指offer》-左旋转字符串
- STM32 基础系列教程 41 – SDMMC
- java keyadapter_在java中使用keyAdapter和keyEvent时出错
- java面向对象编程的三大基本特性--封装,继承,多态
- 25马5跑道,求最快的五匹马的需要比赛的次数
- mysql 常用存储引擎InnoDBMyISAM表格对比
- 适配iOS10以及Xcode8
- jquery中的ajax方法参数
- 日均百亿级日志处理:微博基于 Flink 的实时计算平台建设
- python老齐_python-basic
- 数学建模之预测模型简要分析
- 冒险岛079单机/小范围联机游戏搭建
- git基础命令以及用法
- 论文阅读:Seg4Reg+: Consistency Learning Between Spine Segmentation and Cobb Angle Regression
- 【屏幕灯】MI电脑显示器灯条用户手册
- BGP是做什么的?怎么去配置BGP?
- Android刷机SD卡分区指南 [
- floor()报错注入
热门文章
- 土人系列AS入门教程--实战篇
- C/C++语言之 日期 时间
- 人工智能70年商业变现艰难,新基建能否催生规模化落地?
- 免费科研数据集大搜索,来源于互联网~
- 北京大力度建设城市绿道,我们身边处处是风景
- 填空题C语言,c语言填空题试卷.doc
- java用集合类求数组交并集_java 并集 数组/集合 有重复元素需 保留(急)
- android 观察者的框架,Android 架构师7 设计模式之观察者模式
- 远程连接oracle01017,连接Oracle远程数据库错误:ORA-12541,ORA-12514,ORA-01017的解决方法!...
- matlab的index函数,写论文第九天:MATLAB之rsindex函数