本文主要是介绍拓扑排序 配题(HDU 4857),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
给定点的先后出场次序:例如 点 u 出场的前提是点 v 已经出现,那么这就代表了一个约束条件,现在给出很多的约束条件,用程序来给这些点的出场次序排个序,要求满足所有的约束条件问题,这时候用到的就是拓扑排序。
拓扑排序用于有向无环图,如果过要是想判断一个有向图是否存在环,可以使用拓扑排序进行判断(如果提取入度为0的点的个数没有达到所有点的个数,那么就一定出现环了)
有关拓扑排序的输出问题:
1)要求字典序输出,那么就要以“头”的大小进行排序,然后输出,例如(6-->2-->1; 5-->4-->3),那么此时结果应该为5-->4-->3-->6-->2-->1,该结果为输出结果。
2)要求数字小的先输出,那么就要通过反向构建拓扑图,以“头”大的先输出,然后逆向打印结果,正如上面的例子(3-->4-->5-->1-->2-->6),然后将其逆向打印出来(6-->2-->1-->5-->4-->3)。(此处深思之)
题目:HDU 4857(中文题目很好理解)
解题思路:该题目的要求给人一种错觉,那就是,他要求字典序输出,其实并不是,他要求的是上述情况的第二种,要求数字小的尽可能靠前。注意一个点,就是如果用cin会超时,这里要使用scanf,这样不会超时。
这篇关于拓扑排序 配题(HDU 4857)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!