拓扑排序,要让字典序最小,所以把栈改成堆。

 1 #include<cstdio>
 2 #include<queue>
 3 #include<algorithm>
 4 using namespace std;
 5 #define N 100001
 6 priority_queue<int,vector<int>,greater<int> >Q;
 7 int n,m,x,y;
 8 int v[N],first[N],next[N],en,ru[N],tot,ans[N];
 9 void AddEdge(const int &U,const int &V)
10 {
11     v[++en]=V;
12     next[en]=first[U];
13     first[U]=en;
14 }
15 int main()
16 {
17     scanf("%d%d",&n,&m);
18     for(int i=1;i<=m;i++)
19       {
20           scanf("%d%d",&x,&y);
21           ru[y]++;
22           AddEdge(x,y);
23       }
24     for(int i=1;i<=n;i++) if(!ru[i]) Q.push(i);
25     while(!Q.empty())
26       {
27           int last=tot;
28           ans[++tot]=Q.top(); Q.pop();
29           for(int i=first[ans[tot]];i;i=next[i])
30             {
31                 ru[v[i]]--;
32                 if(!ru[v[i]]) Q.push(v[i]);
33             }
34       }
35     if(tot!=n) puts("OMG.");
36     else
37       {
38         for(int i=1;i<n;i++)
39           printf("%d ",ans[i]);
40         printf("%d\n",ans[n]);
41       }
42     return 0;
43 }

转载于:https://www.cnblogs.com/autsky-jadek/p/4068343.html

【拓扑排序】【堆】CH Round #57 - Story of the OI Class 查错相关推荐

  1. BZOJ3832: [Poi2014]Rally(拓扑排序 堆)

    题意 题目链接 Sol 最直观的思路是求出删除每个点后的最长路,我们考虑这玩意儿怎么求 设\(f[i]\)表示以\(i\)结尾的最长路长度,\(g[i]\)表示以\(i\)开始的最长路长度 根据DAG ...

  2. bzoj 2535: [Noi2010]Plane 航空管制2【拓扑排序+堆】

    有个容易混的概念就是第一问的答案不是k[i]字典序最小即可,是要求k[i]大的尽量靠后,因为这里前面选的时候是对后面有影响的(比如两条链a->b c->d,ka=4,kb=2,kc=3,k ...

  3. 拓扑排序 Codeforces Round #290 (Div. 2) C. Fox And Names

    题目传送门 1 /* 2 给出n个字符串,求是否有一个"字典序"使得n个字符串是从小到大排序 3 拓扑排序 4 详细解释:http://www.2cto.com/kf/201502 ...

  4. 拓扑排序 Codeforces Round #748 (Div. 3)E. Gardener and Tree

    由于最近做了很多关于树的题目,突然想起来之前有一道题意很简单的拓扑排序的题目,索性一块写了. 题意:给出一棵树,总共k次操作,每次操作删除叶子节点,问k次操作后总共还剩余多少节点. 难点:如可判断操作 ...

  5. Codeforces Round #748 (Div. 3) E. Gardener and Tree(拓扑排序)

    linkk 题意: 给一棵树nnn个节点,每次删掉所有的叶子,操作kkk次,求剩下的节点数 思路: 拓扑排序,每次将度数<=1<=1<=1的点放入队列,并且维护操作的次数.对于队列中 ...

  6. [NOIP2017]逛公园 最短路+拓扑排序+dp

    题目描述 给出一张 $n$ 个点 $m$ 条边的有向图,边权为非负整数.求满足路径长度小于等于 $1$ 到 $n$ 最短路 $+k$ 的 $1$ 到 $n$ 的路径条数模 $p$ ,如果有无数条则输出 ...

  7. CodeForces 1213F (强联通分量分解+拓扑排序)

    传送门 •题意 给你两个数组 p,q ,分别存放 1~n 的某个全排列: 让你根据这两个数组构造一个字符串 S,要求: (1)$\forall i \in [1,n-1],S_{pi}\leq S _ ...

  8. 「BZOJ2200」[Usaco2011 Jan] 道路和航线 - 最短路+拓扑排序

    ->点我进原题 [Usaco2011 Jan]道路和航线 Time Limit: 10 Sec Memory Limit: 259 MB Submit: 1116 Solved: 410 Des ...

  9. hdu 1811Rank of Tetris (并查集 + 拓扑排序)

    1 /* 2 题意:这些信息可能有三种情况,分别是"A > B","A = B","A < B",分别表示A的Rating高于B ...

最新文章

  1. python3 turtle_最新版Python 3.8.6 版本发布,跨界程序员零压力学Python之道!(附下载)...
  2. linux进程下的线程数,Linux下查看进程线程数的方法
  3. WebStack-Hugo | 一个静态响应式网址导航主题
  4. WPF ListView DoubleClick
  5. JDBC连接mysql数据库操作
  6. ios学习笔记block回调的应用(一个简单的例子)
  7. getset原子性 redis_一文看透 Redis 分布式锁进化史(解读 + 缺陷分析)
  8. 2016重庆计算机一级考试题型,重庆计算机一级考试真题2016年最新(笔试+上机)
  9. 注册域名需要资格吗_域名对于企业商标注册的重要性你知道吗?
  10. 服务器设计笔记(1)-----消息的封装
  11. php 如何区分0和false,php中怎么区别false与0
  12. 没有权限角色管理功能菜单加载
  13. 北京房租大涨?Python帮你揭穿真相
  14. Latex下载和使用
  15. 刘慈欣计算机预测未来的小说,科幻作家都是“神预测”?刘慈欣等现身说法
  16. 传奇GEE引擎版本架设
  17. 2018.07.18【2018提高组】模拟C组
  18. 获取已安装或未安装的apk签名
  19. html5英文参考文献,外文参考文献引用常识介绍
  20. 使用CAS框架快速实现单点登录

热门文章

  1. python的列表的remove()方法、判断if xxx in xx条件比较耗时问题
  2. JS中的let和var的区别
  3. mybatis中缓存的设计与原理
  4. Qt Model/View 学习笔记 (四)
  5. 如何提升研发人员的非技术才能
  6. Drawer的使用(一):xml文件中使用
  7. luoguP2657 [SCOI2009]windy数
  8. 基于SpringMVC下的Rest服务框架搭建【1、集成Swagger】
  9. BZOJ 1009 [HNOI2008]GT考试
  10. C#编译器选项(目标平台)