Description

糟糕的事情发生啦,现在大家都忙着逃命。但是逃命的通道很窄,大家只能排成一行。

现在有n个人,从1标号到n。同时有一些奇怪的约束条件,每个都形如:a必须在b之前。 
同时,社会是不平等的,这些人有的穷有的富。1号最富,2号第二富,以此类推。有钱人就贿赂负责人,所以他们有一些好处。

负责人现在可以安排大家排队的顺序,由于收了好处,所以他要让1号尽量靠前,如果此时还有多种情况,就再让2号尽量靠前,如果还有多种情况,就让3号尽量靠前,以此类推。

那么你就要安排大家的顺序。我们保证一定有解。

Input

第一行一个整数T(1 <= T <= 5),表示测试数据的个数。 
然后对于每个测试数据,第一行有两个整数n(1 <= n <= 30000)和m(1 <= m <= 100000),分别表示人数和约束的个数。

然后m行,每行两个整数a和b,表示有一个约束a号必须在b号之前。a和b必然不同。

Output

对每个测试数据,输出一行排队的顺序,用空格隔开。

Sample Input

1
5 10
3 5
1 4
2 5
1 2
3 4
1 4
2 3
1 5
3 5
1 2

Sample Output

1 2 3 4 5

反向建图,将大的优先级放前面,然后逆序输出

#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
struct node
{int fu,qiong,next;
}ren[3000001];
int n,m,cut;
int die[3000001];
int cun[3000001];
int head[3000001];
void add(int x,int y)
{ren[cut].fu =x;ren[cut].qiong =y;ren[cut].next =head[x];head[x]=cut++;
}
void topo()
{ priority_queue<int>q;for(int i=1;i<=n;i++){if(die[i]==0)q.push(i);}int ans=0;while(!q.empty()){int first=q.top();cun[ans++]=first;q.pop();for(int j=head[first];j!=-1;j=ren[j].next ){die[ren[j].qiong]--;if(die[ren[j].qiong ]==0){q.push(ren[j].qiong );}}}for(int i=n-1;i>0;i--){printf("%d ",cun[i]);}printf("%d\n",cun[0]);
}
int main()
{     int t;scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);memset(die,0,sizeof(die));memset(head,-1,sizeof(head));cut=0;int x,y;for(int i=0;i<m;i++){scanf("%d%d",&x,&y);add(y,x);die[x]++;}topo();}return 0;
}

hdoj4857逃生相关推荐

  1. YTU 2899: D-险恶逃生 I

    2899: D-险恶逃生 I 时间限制: 1 Sec  内存限制: 128 MB 提交: 130  解决: 55 题目描述 Koha被邪恶的巫师困在一个m*n的矩阵当中,他被放在了矩阵的最左上角坐标( ...

  2. 必看!程序员逃生指南

    作者 | 八宝粥 设计 | 章敏 出品 | CSDN(ID:CSDNnews) 2020 艰难一年已经过去 ,2021 究竟如何,谁也不知道. 作为程序员,前有「大小周」,后有高科技坐垫"监 ...

  3. OSChina 周三乱弹 —— 程序员火灾逃生指南

    2019独角兽企业重金招聘Python工程师标准>>> 秋天到了,风干物燥,请各位程序员小心火烛.万一身边发生火灾,请不要惊慌,按下面提示紧急逃生 话说回来,火灾是小概率事件,加班才 ...

  4. 洛谷 P1343 地震逃生

    题目描述 汶川地震发生时,四川**中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有n个点,m条边.1号点为教室,n号点为安全地带,每条边都只能容纳一定量 ...

  5. 「洛谷P1343」地震逃生 解题报告

    P1343 地震逃生 题目描述 汶川地震发生时,四川XX中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有n个点,m条边.1号点为教室,n号点为安全地带, ...

  6. hdu-----(4857)逃生(拓扑排序)

    逃生 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  7. 撬锁锤怎么用_安全锤是啥?消防蜀黍教你怎么选?如何快速破拆逃生?

    逃生锤又叫安全锤,生活中很多地方都可以看到,公交车.地铁窗边都少不了它们的身影它的款式也是五花八门,那么问题来了当遇到突发状况被困车内时,哪种破窗工具最有效?又该如何快速逃生自救? 近日,消防部门进行 ...

  8. 计蒜客 逃生+动态规划

    题目: 蒜头君在玩一款逃生的游戏.在一个 n×mn \times mn×m 的矩形地图上,蒜头位于其中一个点.地图上每个格子有加血的药剂,和掉血的火焰,药剂的药效不同,火焰的大小也不同,每个格子上有一 ...

  9. hdu 4857 逃生 拓扑排序

    逃生 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=4857 Description 糟糕的事情发生啦,现在大家都忙着逃命.但是逃命的通道很窄,大家只 ...

最新文章

  1. 搭建远程linux,如何在远程Linux服务器上搭建Nginx?
  2. 内容流量管理的关键技术:多任务保量优化算法实践
  3. 算法设计与分析——算法思想总结
  4. 圈圈教你玩USB(第二版) 笔记
  5. 用计算机弹出记事本,为何电脑开机会弹出desktop的记事本出来的
  6. dell N4050声卡驱动安装后仍然没有声音,改装XP完美驱动IDT声卡!实测可用!
  7. 解决网易云课堂不能进入的问题
  8. 【TensorFlow】计算图graph的使用学习笔记(二)
  9. python中__init_subclass__方法用法详解
  10. Hazelcast IMDG参考中文版手册-第二章-入门
  11. axure强制签入签出
  12. 法院判错案如何追责?
  13. 武汉凭什么被列为国家超大城市?
  14. AutoCAD 2007官方.NET教程(一)(C#版)
  15. win10后端开发环境搭建
  16. 首次!TinyML低功耗边缘侧机器学习技术论坛-亚洲分会来到中国!
  17. vue项目某个APP页面实现手机物理按键返回、路由拦截、localStorage存取参数
  18. 中关村修电脑,被坑了
  19. 用聚合数据API(苏州实时公交API)快速写出小程序
  20. 首发:唯品会RPC服务框架与容器化演进

热门文章

  1. 地球椭球的基本几何参数及其相互关系
  2. hp服务器 高性能计算,高性能计算集群(HP_CLUSTER).doc
  3. Eclipse中找不到server服务的解决办法
  4. 安卓可上下滑动改变数值的折线图(基于hellochart)
  5. 如何使用烙铁:初学者指南
  6. Android常用的工具类汇总(方便日后使用)
  7. Pig系统分析(7)-Pig实用工具类
  8. centos卸载docker
  9. Unity3D之MeleeWeaponTrail武器轨迹插件的使用
  10. python四级考试_Python统计四六级考试的词频