逃生

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 2682    Accepted Submission(s): 763

Problem 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
 
Author
CLJ
 
Source
 
Recommend
We have carefully selected several similar problems for you:  5566 5565 5564 5563 5562

#include<stdio.h>
#include<queue>
#include<string.h>
#include<algorithm>
using namespace std;
#define MAX 301000
struct node
{
int u,v;
int next;
}edge[MAX];
int head[MAX];
int dre[MAX],cnt,d[MAX],ans,m,n;
void add(int u,int v)
{
edge[cnt].u=u;
edge[cnt].v=v;
edge[cnt].next=head[u];
head[u]=cnt++;
}
void dijkstra()
{
priority_queue<int>q;
for(int i=1;i<=m;i++)
if(dre[i]==0)
q.push(i);
while(!q.empty())
{
int u=q.top();
q.pop();
d[ans++]=u;
for(int i=head[u];i!=-1;i=edge[i].next)
{
int v=edge[i].v;
dre[v]--;
if(dre[v]==0)
q.push(v);
}
}
for(int i=ans-1;i>=1;i--)
printf("%d ",d[i]);
printf("%d\n",d[0]);
}
int main()
{
int a,b;
int t;
scanf("%d",&t);
while(t--)
{
cnt=ans=0;
memset(dre,0,sizeof(dre));
memset(head,-1,sizeof(head));
scanf("%d%d",&m,&n);
while(n--)
{
scanf("%d%d",&a,&b);
add(b,a);
dre[a]++;
}
dijkstra();
}
return 0;
}

最新文章

  1. Liquid Exception: Included file &#39;_includes/customizer-variables.html&#39; not found in assets/bootstrap/docs/customize.html 解决方案
  2. MVC与WebForm的区别
  3. Makefile 编写 tips
  4. OpenSSL主配置文件openssl.cnf
  5. SEO技巧汇集
  6. FFT 模板
  7. Android--菜单详解
  8. 必填项(required)
  9. A除以B问题
  10. javascript学习之位置获取
  11. Dbcp2抛出org.apache.commons.dbcp2.LifetimeExceededException
  12. 【转】为Xcode添加删除行、复制行快捷键
  13. Debugging to Understand Finalizer--reference
  14. Google桌面搜索引擎
  15. Struts2 权限验证
  16. 手机触屏的js事件
  17. 无法打开 configsource 文件
  18. IDMC制造业ERP业务场景测试之一——硅钢片制造业务流程测试
  19. 查看LOV对应查询语句的研究
  20. js函数柯里化,实现bind

热门文章

  1. bzoj5288: [Hnoi2018]游戏
  2. UESTC--1262--Memory(dfs)
  3. Jq自定义的方法绑定树结构
  4. Hua Wei 机试题目一
  5. .net基础总复习(3)
  6. laravel报错:Unable to detect application namespace.
  7. CF1042F Leaf Sets (贪心+树上构造)
  8. Linux下安装Solr7.5.0,并部署到Tomcat
  9. Java获取当天、本周、本月、本季度、本年等 开始及结束时间
  10. input只能输入数字或两位小数