#930. 排序牛
排序牛
问题描述
农民John注意到,当他的N(1<=N<=1500)头牛排成一行挤奶时。确定的牛经常排在确定的其他牛前面。他制作了一张L对牛的表格。他想把这张表格给他的朋友农民Bob看。不幸的,这交织在一起的网络很慢。
John认识到,他可以通过减少多余的信息来压缩表格。他有的信息都是像“牛A在牛B的前面”。例如,Alice在Betty前面,Betty在Carol前面,Alice在Carol前面。最后一条是多余的。当然,牛被编号成连续的号码,从1..N。只有少数有名字(不被使用)。
帮助John找到最小的子集,可以推出其它。答案唯一。最初的表格没有矛盾的信息,如Alice在Betty前面,Betty在Alice前面。
程序名:order
输入:
第1行:两个整数:N L
第2..L+1行:每行两个整数X Y(1<=X,y<=N),表示X在Y前。无重复。
输出:
第1行:整数U,结果行数。
第2..U+1行:每行两个数字。第1列数字按顺序。
样例:
5 6
3 5
4 2
5 2
2 1
3 1
4 1
4
2 1
3 5
4 2
5 2
注:3在1前,4在1前可推。输出的每一行,不能被其他推出。