题目大意:有n个变量,和m个二元组关系。关系(x,y)表示x<y。现在讲所有变量
从小到大来排序,进行输出。
例如:有4个变量a、b、c、d,若a<b,c<b,d<c,则排序后的可能为a<d<c<b,
也有其他可能d<a<c<d。只要输入其中一个就可。
思路:把n个变量看成是n个点,“x<y”看做是一条边,则得到一个有向图。对图的
节点进行排序,使得每一条有向边(x,y)对应的x都在y前边。即所谓的拓扑排序。
DFS进行拓扑排序,如果存在有向环,则不存在拓扑排序,否则就将访问完的结点
假如到当前拓扑序列的前...
分类:
编程语言 时间:
2014-12-12 20:53:23
阅读次数:
207
题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1103
题目大意:给你一个树,刚开始所有树边边权均为1,不断地将其中的某些边边权改为0,其间问你某个点到根节点之间路径上的边权和。
此题和POJ的Apple Tree很相近。。。
首先DFS生成整棵树的拓扑序,DFS时每个结点i进入的时间l[i]和离开的时间r[i],然后对每次...
分类:
编程语言 时间:
2014-12-03 23:33:36
阅读次数:
322
拓扑排序定义
对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。简单的说,由某个集合上的一个偏序得到该集合上的一个全序,这个操作称之为拓扑排序。...
分类:
编程语言 时间:
2014-11-26 19:07:37
阅读次数:
184
图结构练习——判断给定图是否存在合法拓扑序列Time Limit: 1000MS Memory limit: 65536K题目描述给定一个有向图,判断该有向图是否存在一个合法的拓扑序列。输入输入包含多组,每组格式如下。第一行包含两个整数n,m,分别代表该有向图的顶点数和边数。(n#includein...
分类:
其他好文 时间:
2014-11-24 00:51:41
阅读次数:
206
算法分析:
本题是拓扑排序的典型应用。
由于顶点数量不多,可以采用邻接矩阵来存储图信息,这样算法比较简单,只需要搜索n次,每次把序号最小的入度为0的顶点存储到拓扑序列中就行了。算法思路比较清晰,代码也比较简洁,但时间复杂度和空间复杂度都较高。
另一种方法是采用邻接表存储图信息。由于题目要求输出时编号小的队伍在前,所以在入栈时一定要保证先让序号最小的入度为0的顶点在栈顶,这样根据后进先出的特点,可以把序号最小的顶点存储到拓扑序列中。我采用折半插入排序的方法,把入度为0的顶点按递减序排序,然后对图进行深度优先...
分类:
其他好文 时间:
2014-11-19 16:05:59
阅读次数:
174
http://www.lydsy.com/JudgeOnline/problem.php?id=1093两个条件综合起来加上求最大的节点数,那么很明显如果是环一定要缩点。然后再仔细思考下就是求dag的最长路的数目啦。。。然后wa了。。。看了题解。。。噗!第一次注意到缩点后会有重边QAQ。。。于是。。...
分类:
其他好文 时间:
2014-11-19 14:07:39
阅读次数:
229
图结构练习——判断给定图是否存在合法拓扑序列
Time Limit: 1000MS Memory limit: 65536K
题目描述
给定一个有向图,判断该有向图是否存在一个合法的拓扑序列。
输入
输入包含多组,每组格式如下。
第一行包含两个整数n,m,分别代表该有向图的顶点数和边数。(n
后面m行每行两个整数a b,表示从a到b有一...
分类:
编程语言 时间:
2014-11-19 11:26:00
阅读次数:
230
采用深度优先搜索进行拓扑排序,获取拓扑序列的同时计算各顶点事件的最早发生时间,然后逆序计算各顶点事件的最晚发生时间。
本文是《大话数据结构》的读书笔记,在输出关键路径时采用深度优先搜索输出关键路径,能输出多条关键路径。...
分类:
编程语言 时间:
2014-11-19 11:20:41
阅读次数:
260
图结构练习——判断给定图是否存在合法拓扑序列
Time Limit: 1000MS Memory limit: 65536K
题目描述
给定一个有向图,判断该有向图是否存在一个合法的拓扑序列。
输入
输入包含多组,每组格式如下。
第一行包含两个整数n,m,分别代表该有向图的顶点数和边数。(n
后面m行每行两个整数a b,表示从a到b有一...
分类:
编程语言 时间:
2014-11-19 01:26:26
阅读次数:
212
题目链接:点击打开链接
给定n个点m条限制
下面限制 u->v
表示u必须排在v前面,问把n个数排成一排有多少种方法。
若有0种输出0
1种输出1
多种输出2
**边的数量题目里少了个0==
思路:
0种就是有环,缩点一下判断强连通分量是不是n个。
1种就是拓扑序时队列里任何时刻都只有一个点
否则就是2种
#pragma comment(linker, "/STAC...
分类:
其他好文 时间:
2014-11-15 18:55:56
阅读次数:
124