HDOJ 4857 逃生
BestHack.....真乱.....
逃生
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 139 Accepted Submission(s): 20
如今有n个人,从1标号到n。同一时候有一些奇怪的约束条件,每一个都形如:a必须在b之前。
同一时候,社会是不平等的,这些人有的穷有的富。1号最富,2号第二富,以此类推。
有钱人就贿赂负责人。所以他们有一些优点。
负责人如今能够安排大家排队的顺序,因为收了优点,所以他要让1号尽量靠前,假设此时还有多种情况,就再让2号尽量靠前,假设还有多种情况,就让3号尽量靠前。以此类推。
那么你就要安排大家的顺序。
我们保证一定有解。
然后对于每一个測试数据,第一行有两个整数n(1 <= n <= 30000)和m(1 <= m <= 100000),分别表示人数和约束的个数。
然后m行,每行两个整数a和b。表示有一个约束a号必须在b号之前。a和b必定不同。
1
5 10
3 5
1 4
2 5
1 2
3 4
1 4
2 3
1 5
3 5
1 2
1 2 3 4 5
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue> using namespace std; const int maxn=63000; int n,m; struct Edge
{
int to,next;
}edge[maxn*3]; int Adj[maxn],Size=0,du[maxn];
bool used[maxn]; void Add_Edge(int u,int v)
{
edge[Size].to=v;
edge[Size].next=Adj[u];
du[v]++;
Adj[u]=Size++;
} void init()
{
memset(Adj,-1,sizeof(Adj));Size=0;
memset(du,0,sizeof(du));
memset(used,false,sizeof(used));
} priority_queue<int,vector<int>,less<int> > q;
vector<int> vc; int main()
{
int T_T;
scanf("%d",&T_T);
while(T_T--)
{
init();
vc.clear();
scanf("%d%d",&n,&m);
for(int i=0;i<m;i++)
{
int a,b;
scanf("%d%d",&a,&b);
Add_Edge(b,a);
}
for(int i=1;i<=n;i++)
if(du[i]==0) q.push(i);
while(!q.empty())
{
int u=q.top(); q.pop();
vc.push_back(u);
for(int i=Adj[u];~i;i=edge[i].next)
{
int v=edge[i].to;
du[v]--;
if(du[v]==0)
q.push(v);
}
}
int sz=vc.size();
for(int i=sz-1;i>=0;i--)
{
if(i!=sz-1) putchar(32);
printf("%d",vc[i]);
}
putchar(10);
}
return 0;
}
HDOJ 4857 逃生的更多相关文章
- 转 :hdoj 4857 逃生【反向拓扑】
逃生 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...
- 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 逃生 Description 糟糕的事情发生啦,现在大家都忙着逃命.但是逃命的通道很窄,大家只能 ...
- 【HDOJ】4857 逃生
很容易想到优先队列+拓扑排序.关键点是有限制条件者有限,无限制条件者在最后,条件相同者按序输出.因此采用逆序. #include <iostream> #include <queue ...
- hdu 4857 逃生 拓扑排序+PQ,剥层分析
pid=4857">hdu4857 逃生 题目是求拓扑排序,但不是依照字典序最小输出,而是要使较小的数排在最前面. 一開始的错误思路:给每一个点确定一个优先级(该点所能到达的最小的点) ...
- 正向与反向拓扑排序的区别(hdu 1285 确定比赛名次和hdu 4857 逃生)
确定比赛名次 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submis ...
- 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 Problem Description 糟糕的事情发生啦,现在大家都忙着逃命.但是逃命的通道很窄 ...
- HDU 4857 逃生(反向建边的拓扑排序+贪心思想)
逃生 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...
随机推荐
- datatable 的使用方法
遍历datatable的方法 +方法一:DataTable dt = dataSet.Tables[0];for(int i = 0 ; i < dt.Rows.Count ; i++){str ...
- NS2学习笔记(三)
代理(Agents) 代理是网络层数据包产生和使用的端点,用于实现多层的协议.Agent类部分用OTcl实现,部分用C++实现.C++的代码在~ns/agent.cc和~ns/agent.h中,OTc ...
- 【BZOJ4566_洛谷3181】[HAOI2016]找相同字符(SAM)
自己yy的方法yyyyyyyy着就A了,写篇博客庆祝一下. 题目: 洛谷3181 分析: SAM(可能是)模板题(不会SAM的同学戳我:[知识总结]后缀自动机的构建). 对\(s1\)建出SAM,用\ ...
- Centos7下安装python环境
前言 centos7默认是装有pyhton的. #检查python版本 [root@oldboy_python ~ ::]#python -V Python 但是众所周知,python2版本到2020 ...
- android GPS 定位,取位置信息
现在很多app ,需要取位置信息,所以我也做了一个模块用来取位置信息: 加入位置服务所需的权限: <uses-permission android:name="android.pe ...
- html基础代码演示2
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...
- [转]linux之at指令详解
转自:http://www.2cto.com/os/201409/336183.html 指令:at定时任务,指定一个时间执行一个任务,只能执行一次. 语法:# at [参数] [时间]at> ...
- js 计算时间差
function GetDateDiff(startDate,endDate) { var startTime = new (<any>Date)(Date.parse(startDate ...
- 研磨JavaScript系列(二):没有类
object就是对象的类型.在JavaScript中不管多么复杂的数据和代码.都可以组织成object形式的对象. 但JavaScript没有"类"概念. 看下面这段JavaScr ...
- jenkins配置邮件通知
参考: https://www.cnblogs.com/imyalost/p/8781759.html 谢谢大佬~