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必定不同。
#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;
}
转载于:https://www.cnblogs.com/mfmdaoyou/p/6860929.html
HDOJ 4857 逃生相关推荐
- 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 糟糕的事情发生啦,现在大家都忙着逃命.但是逃命的通道很窄,大家只 ...
- HDU Problem 4857 逃生【拓扑排序+优先队列】
逃生 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...
- HDU 4857 逃生 【拓扑排序+反向建图+优先队列】
逃生 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission ...
- HDU 4857 逃生 拓扑排序好题 第一次做CLJ出的题
逃生 Problem Description 糟糕的事情发生啦,现在大家都忙着逃命.但是逃命的通道很窄,大家只能排成一行. 现在有n个人,从1标号到n.同时有一些奇怪的约束条件,每个都形如:a必须在b ...
- hdoj 4875 逃生
逃生 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...
- HDU 4857 逃生(拓扑排序)
拓扑排序 一.定义 对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若<u,v> ∈ ...
- 反向拓扑排序 HDU 4857 逃生
题意:n个结点,m个拓扑关系(a,b)表示a必须排在b前面,在满足m个拓扑关系关系的前提下使得小的结点尽可能的排在前面.也就是说我们现在要从1号结点开始考虑,如果要排1号结点,根据拓扑关系,首先必须排 ...
- 拓扑排序总结(Kahn算法)
随便记录点东西 在拓扑排序中,排序结果唯一当且仅当所有顶点间具有全序关系. 快速排序不是稳定的(偏序关系),因为相同元素之间的关系无法确定. 插入排序是稳定的(全序关系),因为相同元素可以通过位置的先 ...
最新文章
- [转] 视频直播前端方案
- 「Apollo」Apollo感知汇总
- B17_NumPy IO(save,load,savez,loadtxt,savetxt)
- 深度学习背后的数学_深度学习背后的简单数学
- oracle 更新参数,Oracle动态、静态参数参数修改规则
- python排大小函数_python numpy 一些函数 大小排序和统计
- 20145302张薇《Java程序设计》第十周学习总结
- ubuntu18.04 中个性化配置vim方法
- Exchange 2016与国内版O365混合部署(4):配置Exchange 公网证书
- 特斯拉造芯片:不能失去集成电路的高地,就像西方不能失去耶路撒冷
- bootable_noemulation.img linux,Syslinux使用
- 解决Unable to resolve dependency for ‘:app@debug/compileClasspath’: Could not resolve com.android.supp
- php滑动拼图验证,如何在PHP环境下实现滑动拼图验证
- 基于 钉钉认证 通过 华为、H3C 结合 OpenPortal认证计费系统 实现 网络准入 钉钉授权 实名认证
- java对象的内存分配流程
- 显卡系列和种类你了解多少?AMD、NVIDIA显卡盘点
- 千锋android培训学院!双非渣本Android四年磨一剑,真香!
- 【云原生 | Kubernetes 实战】01、K8s-v1.25集群搭建和部署基于网页的 K8s 用户界面 Dashboard
- 云原生CI/CD:tekton/pipeline之认证篇
- 摄像头poe供电原理_poe供电是什么_poe供电工作原理介绍 - 全文