问题 4644 --2.懒惰的工程师

4644: 2.懒惰的工程师

题目描述

  SimCity共有n个街区,编号分别是1,2,...,n,SimCity的高速公路都是直接连接两个不同的街区,而且是单行的,你作为SimCity的工程师接到修建m条高速公路的任务,但是懒惰的你决定不按照指定的任务而是按照自己的计划修建公路,你所制定的修建计划需要满足以下两个条件:
1.如果在任务的m条公路中i可以到达j,那么在你的修建计划里i也一定要可以达到j
2.如果在任务的m条公路中i不能到达j,那么在你的修建计划里i也不能到达到j
3.你的修建计划必须使在满足前两个条件的情况下修建的公路条数最小

输入

输入文件的第一行是两个整数n和m,
接下来m行,每行两个整数i,j,表示你的任务里包括修建一条从i到达j的单向高速公路

输出

输出文件的第一行为一个整数t表示你的计划中修建需要修建的公路条数,
接下来t行,每行两个整数i,j,表示你的计划中包括修建一条从i到达j的单向高速公路

样例输入输出

输入#1 复制
4 6
1 2
1 3
1 4
2 3
2 4
3 4
输出#1 复制
3
1 2
2 3
3 4

提示

【约束条件】
3<=n<=2,000 3<=m<=20,000
%40的数据满足m<=2,000

序号 标题 作者 发表时间 费用 订购数 操作