点赞(0)
 

0.0分

3 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 2 条评论

万卷消永愁 4年前 回复TA
这个题就是个坑,首先拓扑排序本身就很可能有不唯一答案,每次刷新找到入度为0的输出(入度为0的有多个的时候也没有规定先输出哪一个,一般是按顺序来的)。这里题目给的测试数据也很奇怪,还有重复的读入,读入顺序也有矛盾的地方,有的测试数据是优先找入读为0且出度也为0的输出,有的是在出度都不为0的时候,先找字母大的,也有先找字母小的,真是搞不懂。希望大家刷这个题适可而止,思路很简单的,不用死磕。
renqinghua 4年前 回复TA
将64行改成 Queue<Node6> queue=new PriorityQueue<>(cmp);可以得到字典序最小的排列
       //自定义比较器
	static Comparator<Node6> cmp=new Comparator<Node6>()
	{

			@Override
			public int compare(Node6 o1, Node6 o2)
			{
				return o1.value-o2.value;//字典序小
				//return o2.value-o1.value;//字典序大
			}
		
	};