Gym Class(拓扑排序)
Gym Class
Time Limit: 6000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 628 Accepted Submission(s): 244
今天,它终于当上了梦寐以求的体育课老师。第一次课上,它发现一个有趣的事情。在上课之前,所有同学要排成一列, 假设最开始每个人有一个唯一的ID,从1到N,在排好队之后,每个同学会找出包括自己在内的前方所有同学的最小ID,作为自己评价这堂课的分数。麻烦的是,有一些同学不希望某个(些)同学排在他(她)前面,在满足这个前提的情况下,新晋体育课老师——度度熊,希望最后的排队结果可以使得所有同学的评价分数和最大。
对于每组数据,第一行输入两个整数N和M(1≤N≤100000,0≤M≤100000),分别表示总人数和某些同学的偏好。
接下来M行,每行两个整数A 和B(1≤A,B≤N),表示ID为A的同学不希望ID为B的同学排在他(她)之前。你可以认为题目保证至少有一种排列方法是符合所有要求的。
1 0
2 1
1 2
3 1
3 1
2
6
代码:
#include<stdio.h>
#include<queue>
#include<vector>
using namespace std;
#include<string.h>
const int MAXN=;
struct Node{
int to,next;
};
Node edg[MAXN*];
int head[MAXN],ans[MAXN],top,n,que[MAXN];
priority_queue<int>dl;
typedef __int64 LL;
void topu(){
int temp=;
for(int i=;i<=n;i++){
if(!que[i])dl.push(i);
}
while(!dl.empty()){
int k=dl.top();
dl.pop();
//temp++;
ans[top++]=k;
for(int j=head[k];j!=-;j=edg[j].next){
que[edg[j].to]--;
if(!que[edg[j].to])dl.push(edg[j].to);
}
}
int x = ans[];
LL sum = ;
for(int i = ;i < top;i++){
// printf("%d ", ans[i]);
if(ans[i] < x){
x = ans[i];
}
sum += x;
}//puts("");
printf("%I64d\n", sum);
}
void initial(){
memset(head,-,sizeof(head));
memset(que,,sizeof(que));
while(!dl.empty())dl.pop();
top=;
}
int main(){
int T,M,a,b;
scanf("%d",&T);
while(T--){
initial();
scanf("%d%d",&n,&M);
for(int i=;i<M;i++){
scanf("%d%d",&b,&a);
edg[i].to=a;
edg[i].next=head[b];
head[b]=i;
que[a]++;
}
topu();
}
return ;
}
Gym Class(拓扑排序)的更多相关文章
- 2016"百度之星" - 初赛(Astar Round2A)Gym Class(拓扑排序)
		Gym Class Accepts: 849 Submissions: 4247 Time Limit: 6000/1000 MS (Java/Others) Memory Limit: 65 ... 
- HDU 5695 Gym Class 拓扑排序
		题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5695 题解: 求出字典序最大的拓扑序.然后把求好的数列翻转过来就是满足条件的数列,然后模拟求一下va ... 
- 2016"百度之星" - 初赛(Astar Round2A) 1006 Gym Class 拓扑排序
		Gym Class Time Limit: 6000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem ... 
- hdu-5695 Gym Class(贪心+拓扑排序)
		题目链接: Gym Class Time Limit: 6000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ... 
- HDU 5695 ——Gym Class——————【贪心思想,拓扑排序】
		Gym Class Time Limit: 6000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total S ... 
- 2016 百度之星初赛 Gym Class(优先队列+拓扑排序)
		Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit Status Pract ... 
- 【拓扑排序】【线段树】Gym - 101102K - Topological Sort
		Consider a directed graph G of N nodes and all edges (u→v) such that u < v. It is clear that this ... 
- 【DFS】【拓扑排序】【动态规划】Gym - 100642A - Babs' Box Boutique
		给你10个箱子,有长宽高,每个箱子你可以决定哪个面朝上摆.把它们摞在一起,边必须平行,上面的不能突出来,问你最多摆几个箱子. 3^10枚举箱子用哪个面.然后按长为第一关键字,宽为第二关键字,从大到小排 ... 
- HDU - 5695 Gym Class 【拓扑排序】
		题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=5695 思路 给定一些关系 进行拓扑排序 但是有一个要求 对于哪些没有确切的位置的点 要按照ID大小 I ... 
- Gym 100512G Grand Tour (拓扑排序)
		题意:一个团队要去参观一些学校,某些学校要在某些学校之前先参观,并且每个学校有一个权值,团队去的时间与权值的差作为难过度(最小是0), 所有的难过度的最大值是伤心度,让你安排参观顺序,使得这个伤心度最 ... 
随机推荐
- 泛型 Field 和 SetField 方法 (LINQ to DataSet)
			LINQ to DataSet 为 DataRow 类提供用于访问列值的扩展方法:Field 方法和 SetField 方法.这些方法使开发人员能够更轻松地访问列值,特别是 null 值.DataSe ... 
- HDU 2025 查找最大元素
			查找最大元素 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submis ... 
- 执行eclipse,迅速failed to create the java virtual machine。
			它们必须在一排,否则会出现The Eclipse executable launcher was unable to locate its companion shared library的错误 打开 ... 
- Android ActionBar应用实战,高仿微信主界面的设计
			转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/26365683 经过前面两篇文章的学习,我想大家对ActionBar都已经有一个相对 ... 
- OC特有语法-分类(category)
			本文转载Keefo. Objective-C的Object-oriented programming特性提供subclass和category这2个比较非常重要的部分.subclass应该反复被各种编 ... 
- CSS样式之背景、文本
			一.背景 1.背景颜色用background-color属性,例如:body{background-color:red} 2.用图像做背景用background-image属性,例如b ... 
- Action重定向总结
			[HttpPost] public ActionResult StudentList( string StudName, string studName, DateTime BirthDay, For ... 
- Silverlight Visifire控件 后台设置颜色
			ColorSet cs = new ColorSet(); cs.Id = "colorset1"; // 设置ColorSet 的 Id 为 colorset1 1.cs.Bru ... 
- JS生成不重复随机数
			说明 我们可以用Math.random()的方法轻松的生成 一个随机的数字,但是这个数字可能是重复的.有时候,我们需要一个不重复的随机数,可以用很多的方法来实现这个要求,以下方法是效率最高的. 解释 ... 
- 1、Spark 通过api,hfile两种形式获取hbase数据,简单样例
			pom内容: <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-se ... 
