Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u

Description

众所周知,度度熊喜欢各类体育活动。

今天,它终于当上了梦寐以求的体育课老师。第一次课上,它发现一个有趣的事情。在上课之前,所有同学要排成一列, 假设最开始每个人有一个唯一的ID,从1到N,在排好队之后,每个同学会找出包括自己在内的前方所有同学的最小ID,作为自己评价这堂课的分数。麻烦的是,有一些同学不希望某个(些)同学排在他(她)前面,在满足这个前提的情况下,新晋体育课老师——度度熊,希望最后的排队结果可以使得所有同学的评价分数和最大。 

Input

第一行一个整数T,表示T(1 \leq T \leq 30) 组数据。

对于每组数据,第一行输入两个整数N和M (1 \leq N \leq 100000, 0 \leq M \leq 100000),分别表示总人数和某些同学的偏好。

接下来M行,每行两个整数A 和B(1 \leq A, B \leq N),表示ID为A的同学不希望ID为B的同学排在他(她)之前。你可以认为题目保证至少有一种排列方法是符合所有要求的。 

Output

对于每组数据,输出最大分数 。

Sample Input

  1. 3
  2. 1 0
  3. 2 1
  4. 1 2
  5. 3 1
  6. 3 1

Sample Output

  1. 1
  2. 2
  3. 6
  1. /*
  2. 这题就是简单的拓扑排序+优先队列
  3. 然而被我wa了两发,第一次vector开始没清空
  4. 第二次,结果值很大,超过int 应该用long long
  5. 真不知道该说自己太粗心 还是基础功不扎实
  6. */
  7. #include <iostream>
  8. #include<queue>
  9. #include<cstdio>
  10. #include<cstring>
  11. using namespace std;
  12. int cnt[];
  13. vector<int> s[];
  14. int n,m,t;
  15. long long ans;
  16. struct cmp
  17. {
  18. bool operator()(int a,int b)
  19. {
  20. return a<b;
  21. }
  22. };
  23. void toposort()
  24. {
  25. priority_queue<int,vector<int>,cmp> Q;
  26. for(int i=;i<=n;i++) if (cnt[i]==) Q.push(i);
  27. int minid=;
  28. ans=;
  29. while(!Q.empty())
  30. {
  31. int u=Q.top();
  32. minid=min(minid,u);
  33. ans+=minid;
  34. Q.pop();
  35. for(int i=;i<s[u].size();i++)
  36. {
  37. cnt[s[u][i]]--;
  38. if (cnt[s[u][i]]==) Q.push(s[u][i]);
  39. }
  40. }
  41. }
  42. int main()
  43. {
  44. scanf("%d",&t);
  45. for(;t>;t--)
  46. {
  47. scanf("%d%d",&n,&m);
  48. memset(cnt,,sizeof(cnt));
  49. for(int i=;i<=n;i++) s[i].clear();
  50. for(int i=;i<=m;i++)
  51. {
  52. int x,y;
  53. scanf("%d%d",&x,&y);
  54. s[x].push_back(y);
  55. cnt[y]++;
  56. }
  57. toposort();
  58. printf("%lld\n",ans);
  59. }
  60. return ;
  61. }

2016 百度之星初赛 Gym Class(优先队列+拓扑排序)的更多相关文章

  1. 2016"百度之星" - 初赛(Astar Round2A)HDU 5695 拓扑排序+优先队列

    Gym Class Time Limit: 6000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total S ...

  2. 2016百度之星 初赛2A ABEF

    只做了1001 1002 1005 1006.剩下2题可能以后补? http://acm.hdu.edu.cn/search.php?field=problem&key=2016%22%B0% ...

  3. HDU 5690:2016"百度之星" - 初赛 All X

    原文链接:https://www.dreamwings.cn/hdu5690/2657.html All X Time Limit: 2000/1000 MS (Java/Others)    Mem ...

  4. 2016"百度之星" - 初赛(Astar Round2A)Gym Class(拓扑排序)

    Gym Class  Accepts: 849  Submissions: 4247  Time Limit: 6000/1000 MS (Java/Others)  Memory Limit: 65 ...

  5. 2016"百度之星" - 初赛(Astar Round2A)1006 Gym Class(HDU5695)——贪心+拓扑排序

    分析:首先,利用贪心可知,如果要所有人的分数和最高,需要把序号大的优先放在前面.其次,对于a的前面不能为b,那么只能a在b前面了,那么就建立一条从a到b的边,并且b的入度加1.然后就是拓扑排序了.要分 ...

  6. 2016"百度之星" - 初赛(Astar Round2A) 1006 Gym Class 拓扑排序

    Gym Class  Time Limit: 6000/1000 MS (Java/Others)  Memory Limit: 65536/65536 K (Java/Others) Problem ...

  7. 2016百度之星 初赛2B ACEF

    做了1001 1003 1005 1006 看题:http://bestcoder.hdu.edu.cn/contests/contest_show.php?cid=702 交题:http://acm ...

  8. 2016"百度之星" - 初赛(Astar Round2A)

    题目链接: http://bestcoder.hdu.edu.cn/contests/contest_show.php?cid=701 1001 : 矩阵快速幂 #include <iostre ...

  9. 2016"百度之星" - 初赛(Astar Round2B)

    Problem Description 中位数定义为所有值从小到大排序后排在正中间的那个数,如果值有偶数个,通常取最中间的两个数值的平均数作为中位数. 现在有n个数,每个数都是独一无二的,求出每个数在 ...

随机推荐

  1. Openjudge-NOI题库-和数

    题目描述 Description 给定一个正整数序列,判断其中有多少个数,等于数列中其他两个数的和. 比如,对于数列1 2 3 4, 这个问题的答案就是2, 因为3 = 2 + 1, 4 = 1 + ...

  2. 1.Office 365系列(-)

    //来源:http://www.cnblogs.com/JessZhou/p/3470654.html 首先从Office 365开始. Office 365是微软云计划的一部分,主要包括sharep ...

  3. os库-时间函数

    一.时间的三种格式 1.用数值表示时间值 (时间戳)用数字值来表示时间值,实际上时间值的本质就是一个数字值.例如:d = 1131286477 这里的 1131286477 是一个以秒为单位的 格林威 ...

  4. Linux安装mysql mysql5.5.40 <NIOT>

    一.    操作系统与软件 操作系统及版本 Centos 6.4 依赖包 gcc.gcc-c++.cmake.ncurses-devel 下载目录 /opt Mysql安装目录 /usr/local/ ...

  5. -webkit-overflow-scrolling

    -webkit-overflow-scrolling 属性 控制元素在移动设备上是否使用滚动回弹效果. 取值 auto    使用普通滚动, 当手指从触摸屏上移开,滚动会立即停止. touch   使 ...

  6. 安卓android:scaleType属性

    ImageView.ScaleType.CENTER|android:scaleType="center" 以原图的几何中心点和ImagView的几何中心点为基准,按图片的原来si ...

  7. display: inline-block兼容性写法

    display:inline-block;*display:inline;*zoom:1;

  8. [SOJ] 图的广度优先搜索

    Time Limit: 1sec    Memory Limit:256MB Description 读入图的邻接矩阵以及一个顶点的编号(图中顶点的编号为从1开始的连续正整数.顶点在邻接矩阵的行和列上 ...

  9. IOS 类的属性修饰符atomic

    在声明一个类的属性时,默认这个属性会被修饰atomic,意思是原子性访问的. nonatomic和atomic修饰的属性,在自己没有重写setter和getter的时候才会发生作用,其主要的作用可以理 ...

  10. FZU 1893 内存管理 模拟

    比赛的时候队友要做这道题…… 他没做出来自己也被误导了…… 也算是个教训 自己还是要有自己的思路…… 又是模拟题…… 网上都是用vector做的 我最近才会stl 怎么会用那么高大上的的东西…… 强力 ...