逃生

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

Total Submission(s): 74    Accepted Submission(s): 13
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
 

思路:
注意此题不是保证字典序,而是要最小的尽量在前面。
反向建图,将大的优先级放前面。然后逆序输出。
首先反向建图+逆序输出为一个答案。

然后要保证最小的在最前面,由于是逆序输出,所以优先级要反过来。


代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <queue>
#define maxn 30005
using namespace std; int n,m,ans;
bool vis[maxn];
int in[maxn];
vector<int>edge[maxn]; int main()
{
int i,j,t;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
memset(in,0,sizeof(in));
for(i=1;i<=n;i++) edge[i].clear();
int u,v;
for(i=1;i<=m;i++)
{
scanf("%d%d",&u,&v);
in[u]++;
edge[v].push_back(u);
}
priority_queue<int> q;
for(i=1;i<=n;i++)
{
if(in[i]==0) q.push(i);
}
memset(vis,0,sizeof(vis));
vector<int>res;
ans=0;
while(!q.empty())
{
ans++;
u=q.top();
res.push_back(u);
q.pop();
vis[u]=1;
for(i=0;i<edge[u].size();i++)
{
v=edge[u][i];
in[v]--;
if(in[v]==0) q.push(v);
}
}
for(i=res.size()-1;i>=0;i--)
{
if(i==res.size()-1) printf("%d",res[i]);
else printf(" %d",res[i]);
}
puts("");
}
return 0;
}
/*
20
4 3
4 1
4 2
3 2
*/



hdu 4857 逃生 (拓扑排序+保证最小在前面)的更多相关文章

  1. hdu 4857 逃生 拓扑排序+PQ,剥层分析

    pid=4857">hdu4857 逃生 题目是求拓扑排序,但不是依照字典序最小输出,而是要使较小的数排在最前面. 一開始的错误思路:给每一个点确定一个优先级(该点所能到达的最小的点) ...

  2. hdu 4857 逃生 拓扑排序+逆向建图

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

  3. hdu 4857 逆向拓扑排序+反向输出

    /*一组测试实例 4 4 2 3 1 2 4 */ #include<stdio.h> #include<string.h> #include<queue> usi ...

  4. HDU.2647 Reward(拓扑排序 TopSort)

    HDU.2647 Reward(拓扑排序 TopSort) 题意分析 裸的拓扑排序 详解请移步 算法学习 拓扑排序(TopSort) 这道题有一点变化是要求计算最后的金钱数.最少金钱值是888,最少的 ...

  5. HDU 4857 逃生 (反向拓扑排序 & 容器实现)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4857 逃生 Time Limit: 2000/1000 MS (Java/Others)    Mem ...

  6. 正向与反向拓扑排序的区别(hdu 1285 确定比赛名次和hdu 4857 逃生)

    确定比赛名次 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submis ...

  7. HDU 4857 逃生 【拓扑排序+反向建图+优先队列】

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

  8. HDU 4857 逃生(反向建边的拓扑排序+贪心思想)

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

  9. HDU 4857 逃生(拓扑排序)

    拓扑排序 一.定义 对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若<u,v> ∈ ...

随机推荐

  1. 关于DirectShow SDK 和Windows SDK,及DirectX SDK

    关于DirectShow SDK 和Windows SDK,及DirectX SDK   本文描述了DirectShow SDK ,Windows SDK,DirectX SDK ,VS200?之间的 ...

  2. Mybatis 传入List类型参数,报错:There is no getter for property named '__frch_item_0' in

    错误如下: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.Re ...

  3. js获取本机mac地址,IP地址,计算机名

    <!DOCTYPE HTML> <html> <head> <title>js获取本机mac地址,IP地址,计算机名</title> < ...

  4. 硬件负载均衡F5和软负责均衡Nginx

    请直接搜索相关文章了解:http://www.ideadata.com.cn/wisdomAction/readWisdom.do?id=75   F5,硬件 优点:能够直接通过智能交换机实现,处理能 ...

  5. 解析XML并将信息封装到对象中

    [person.xml]要解析的内容 <?xml version="1.0" encoding="UTF-8"?> <students> ...

  6. Volley框架的介绍使用

    Volley是在2013年的Google I/O 2013大会上发布的,是我们的网络通信更快,更简单,更方便.对于初学者来讲是一个很好的框架. 简单来说,它提供了如下的便利功能: JSON,图像等的异 ...

  7. Android -- Fragment注意事项

    ViewPager+Fragment 让Fragment成为ViewPager的一页时,FragmentManager会一直保存管理创建好了的Fragment,即使当前不是显示的这一页,Fragmen ...

  8. GridControl 分组排序

    方法一:纯代码 this.list.gridControl.ItemsSource = lsItem; this.list.gridControl.GroupBy("GroupTitle&q ...

  9. 解决WordPress 页面无法评论的问题

    最近在使用WordPress制作一个企业网站,因为是企业网站所以文章和页面都不需要评论功能,因此在主题里禁用掉了评论功能 //禁用页面和文章的评论功能//add_filter('the_posts', ...

  10. 几种流行Webservice框架性能对比(转载)

    1摘要 开发webservice应用程序中离不开框架的支持,当open-open网站列举的就有很多种,这对于开发者如何选择带来一定的疑惑.性能Webservice的关键要素,不同的框架性能上存在较大差 ...