HDU 4857 topological_sort
逃生
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 877 Accepted Submission(s): 236
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
BestCoder Round #1
/**********************************************
author : Grant Yuan
time : 2014.7.29
algorithm: topological_sort
source : HDU 4857
**********************************************/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<vector>
#include<stack>
#include<queue>
#define MAX 30007
using namespace std;
int n,m;
priority_queue<int> q;
vector<int> G[MAX];
int num[MAX];
int lu[MAX];
int main()
{ int a,b,t;
scanf("%d",&t);
while(t--){
memset(lu,0,sizeof(lu));
memset(num,0,sizeof(num));
scanf("%d%d",&n,&m);
memset(G,0,sizeof(G));
while(!q.empty()){
q.pop();
}
for(int i=1;i<=m;i++)
{
scanf("%d%d",&a,&b);
G[b].push_back(a);
num[a]++;
}
for(int i=1;i<=n;i++)
{
if(num[i]==0)
q.push(i);
}
int i;int p=n;
while(1){
if(q.empty())
break;
i=q.top();
q.pop();
lu[p--]=i;
for(int j=0;j<G[i].size();j++)
{
num[G[i][j]]--;
if(num[G[i][j]]==0)
q.push(G[i][j]);
}
}
for(int i=1;i<=n;i++)
{
if(i<n) printf("%d ",lu[i]);
else printf("%d",lu[i]);
}
printf("\n");
}
return 0;
}
HDU 4857 topological_sort的更多相关文章
- HDU 4857 拓扑排序 优先队列
n个数,已经有大小关系,现给m个约束,规定a在b之前,剩下的数要尽可能往前移.输出序列 大小关系显然使用拓扑结构,关键在于n个数本身就有大小关系,那么考虑反向建图,优先选择值最大的入度为零的点,这样得 ...
- HDU 4857
HDU 4857 (反向拓扑排序 + 优先队列) 糟糕的事情发生啦,现在大家都忙着逃命.但是逃命的通道很窄,大家只能排成一行. 现在有n个人,从1标号到n.同时有一些奇怪的约束条件,每个都形如:a必须 ...
- codeforce E - Minimal Labels+hdu 4857
两个题目的意思差不多 都是希望得出的拓扑序如果有多种 要求输出字典序小的情况 这里引用一个大佬的博客 关于为什么不能直接建图然后用小根堆解决这个问题(http://blog.csdn.net/rgno ...
- HDU 4857 逃生 (反向拓扑排序 & 容器实现)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4857 逃生 Time Limit: 2000/1000 MS (Java/Others) Mem ...
- HDU 4857 逃生 (优先队列+反向拓扑)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4857 解题报告:有n个点,有m个条件限制,限制是像这样的,输入a b,表示a必须排在b的前面,如果不 ...
- hdu 4857 逃生
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=4857 逃生 Description 糟糕的事情发生啦,现在大家都忙着逃命.但是逃命的通道很窄,大家只能 ...
- (hdu) 4857 逃生 (拓扑排序+优先队列)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4857 Problem Description 糟糕的事情发生啦,现在大家都忙着逃命.但是逃命的通道很窄 ...
- HDU 4857 Couple doubi(找循环节)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4861 解题报告:桌子上有k个球 ,第i个球的价值wi = 1^i+2^i+...+(p-1)^i (m ...
- hdu 4857 逃生 拓扑排序+PQ,剥层分析
pid=4857">hdu4857 逃生 题目是求拓扑排序,但不是依照字典序最小输出,而是要使较小的数排在最前面. 一開始的错误思路:给每一个点确定一个优先级(该点所能到达的最小的点) ...
随机推荐
- laravel中的gate
public function boot(){ $this->registerPolicies(); Gate::define('update-post',function($user,$pos ...
- shell-code-6-输入输出重定向
解释: 1. 文件描述符0通常是标准输入(STDIN,终端),1 是标准输出(STDOUT,终端),2 是标准错误输出(STDERR). 2. 如果希望 stderr 追加到 file 文件末尾,可以 ...
- eclipse去除js(JavaScript)验证错误
第一步: 去除eclipse的JS验证: 将windows->preference->Java Script->Validator->Errors/Warnings-> ...
- 链式链表的C风格实现
头文件: #ifndef _LINKLIST_H_ #define _LINKLIST_H_ typedef void LinkList; //将数据的类型分离,相当于句柄 //只是一个小节点 包含着 ...
- 45个有用的JavaScript技巧
众所周知,JavaScript是世界上最流行的变成语言,不管是web网页,手机APP(例如PhoneGap或Appcelerator),还是服务器端(例如NodeJS或Wakanda)还有许多其他的实 ...
- rocketmq 问题
1. 收不到消息-consumerOffset.json 信息错位 这种情况一般是,手动删除了store/commitlog目录里的数据等非常规手段造成了consumerOffset.json中记录的 ...
- 大数据学习——azkaban工作流调度系统
azkaban的安装部署 在/root/apps 1目录下新建azkaban文件夹 上传安装包到azkaban 2解压 .tar.gz 3删掉安装包 [root@mini1 azkaban]# .ta ...
- PHP 判断表单提交的file是否为空
echo '<pre>'; var_dump($product_attach_files); echo "</pre>"; echo ];
- WordPress的编译器功能扩展
//php代码如下://向文章编辑器的Visual区添加自定义按钮,js文件存放在wp-content/plugins/文件夹下 add_action('admin_head', 'my_custom ...
- Codeforces Round #416 (Div. 2) 本来以为这个时间是晚上的,下午就没做
A. Vladik and Courtesy time limit per test 2 seconds memory limit per test 256 megabytes input stand ...