强连通分量:两个点能够互相连通。 算法分解:第一步。正向dfs全部顶点,并后序遍历 第二步,将边反向,从最大边dfs,构成强连通分量 标号最大的节点属于DAG头部,cmp存一个强连通分量的拓扑序。 poj2186 解就是拓扑后的最后一个强连通分量 #include<cstdio> #include< ...
分类:
其他好文 时间:
2017-05-24 21:06:42
阅读次数:
158
一句话题意:求AOV网的拓扑序列,输出按字典序最小的一个。 拓扑排序 : 由AOV网构造拓扑序列的拓扑排序算法主要是循环执行以下两步,直到不存在入度为0的顶点为止。 (1) 选择一个入度为0的顶点并输出之; (2) 从网中删除此顶点及所有出边。 循环结束后,若输出的顶点数小于网中的顶点数,则输出“有 ...
分类:
编程语言 时间:
2017-05-24 15:54:43
阅读次数:
126
拓扑排序的DFS算法 输入:一个有向图 输出:顶点的拓扑序列 具体流程: (1) 调用DFS算法计算每一个顶点v的遍历完成时间f[v] (2) 当一个顶点完成遍历时,将该顶点放到一个链表的最前面 (3) 返回链表(按照链表次序输出顶点即为顶点的拓扑序列) 样例输入 样例输出 因为对有向无环图进行df ...
分类:
编程语言 时间:
2017-05-04 20:18:44
阅读次数:
171
【题目链接】 http://poj.org/problem?id=2723 【题目大意】 给出一些钥匙和M扇有顺序的门,每扇门可以用两种钥匙打开, 每两把钥匙被绑在一起,绑在一起的钥匙只有其中一把可以使用, 问最多能按顺序打开几扇门。 【题解】 因为门是按顺序的,因此能打开的门是单调, 首先我们二分 ...
分类:
其他好文 时间:
2017-04-05 01:00:26
阅读次数:
177
题目 分析:将先后关系看成边,最后求出字典序最小的拓扑序列 1 #include "iostream" 2 #include "cstdio" 3 #include "cstring" 4 #include "string" 5 using namespace std; 6 const int ma ...
分类:
其他好文 时间:
2017-04-01 11:39:13
阅读次数:
198
【题目链接】 http://poj.org/problem?id=2186 【题目大意】 给出一张有向图,问能被所有点到达的点的数量 【题解】 我们发现能成为答案的,只有拓扑序最后的SCC中的所有点, 那么我们从其中一个点开始沿反图dfs,如果能访问到全图, 则答案为其所在SCC的大小,否则为0. ...
分类:
其他好文 时间:
2017-03-28 23:29:48
阅读次数:
274
sam好,好写好调好ac! 原题: 图片题面好评 2<=N<=500000 在syq大神的指点下终于理解一道后缀自动姬了quq (其实是因为这道题的dp主要是在后缀树(就是拓扑序)上搞树形dp…… 恩sam有个好玩的东西呢就是搞出后缀自动姬后根据max搞一个类似与后缀数组中countrank的东西 ...
分类:
其他好文 时间:
2017-03-13 23:37:37
阅读次数:
221
题意:给定两种限制:1、编号为i的航班必须在ki+1之前起飞 2、(a,b)表示a必须在b之前起飞。求:1、一个合法起飞序列 2、每个航班在所有合法起飞顺序中,最早的起飞时间。问题保证有解 题解:首先按照第二个限制条件建图,那么第一问随便跑一个拓扑序就好,关键在第二问,我们枚举每一个飞机,假定该飞机 ...
分类:
编程语言 时间:
2017-02-27 23:01:03
阅读次数:
251
题意:给定限制条件(a,b)表示a必须在b之前,求所有合法序列中,小的数尽量在前面的方案 题解:首先我们根据限制条件建反向图,然后在反向图上求字典序最小的拓扑序(队列改为堆),逆序输出即可。 #include <queue> #include <functional> #include <cstdi ...
分类:
编程语言 时间:
2017-02-27 22:54:20
阅读次数:
243