拓扑排序拓扑排序主要有无前驱,无后继和dfs三种方法; 若只需判断是否为拓扑序列(DAG),可用上述拓扑排序看是否排序成功,也可用floyd传递闭包;无前驱的拓扑排序法:/* 无前驱的拓扑排序法 */bool toposort(){ queue q; while(!ans.empty()...
分类:
编程语言 时间:
2015-03-11 16:59:08
阅读次数:
244
题目:确定比赛名次Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 337 Accepted Submission(s): 180 Problem Description有N个比赛队(1 Input输入有若干组,每组中的第一行为二个数N(1 Out...
分类:
其他好文 时间:
2015-03-08 20:15:40
阅读次数:
152
给出N行英雄的比较,每一行包含两个英雄的名字,代表第一个英雄比第二个英雄更受欢迎。英雄的数目不超过16个。问有多少种可能的受欢迎程度的序列满足N行英雄的比较。由于只有英雄数目不超过16个,可以用二进制来解决。x的的位表示还有哪些点没有处理。在这些点中选择一个入度没零的点,求剩下的点可能排列的数目。 ...
分类:
其他好文 时间:
2015-03-04 22:33:44
阅读次数:
147
#include
#include
using namespace std;
int tp[11][11],visit[11];
int main()
{
int n,m,i,j,k,s,o,c;
int flag,count,a,b;
while(cin>>n>>m)
{
s=1;
o=0;
count=0;
memset(tp,0,sizeof(tp));
m...
分类:
其他好文 时间:
2014-12-20 23:30:09
阅读次数:
216
有向拓扑排序的应用 首先输入n个点,表示有向图中有n个顶点,接下来n行, 每行输入几个数字,第i行的数字表示它们是顶点i的后继节点,输出要求保证该行的编号要在这几个数前面,当数字为0时,表示i点没有后继节点了。 就是要求输出这个有向图的拓扑序列。[输入输出]:[样例]: Sample Input50...
分类:
编程语言 时间:
2014-12-20 22:03:48
阅读次数:
203
题目大意:有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
拓扑排序定义
对一个有向无环图(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
图结构练习——判断给定图是否存在合法拓扑序列
Time Limit: 1000MS Memory limit: 65536K
题目描述
给定一个有向图,判断该有向图是否存在一个合法的拓扑序列。
输入
输入包含多组,每组格式如下。
第一行包含两个整数n,m,分别代表该有向图的顶点数和边数。(n
后面m行每行两个整数a b,表示从a到b有一...
分类:
编程语言 时间:
2014-11-19 11:26:00
阅读次数:
230