最小路径覆盖问题

题目描述

给定有向图 $G=(V,E)$ 。设 $P$ 是 $G$ 的一个简单路(顶点不相交)的集合。如果 $V$ 中每个定点恰好在 $P$ 的一条路上,则称 $P$ 是 $G$ 的一个路径覆盖。$P$ 中路径可以从 $V$ 的任何一个定点开始,长度也是任意的,特别地,可以为 $0$。$G$ 的最小路径覆盖是 $G$ 所含路径条数最少的路径覆盖。设计一个有效算法求一个 DAG(有向无环图)$G$ 的最小路径覆盖。

输入输出格式

输入格式


第一行有两个正整数 $n$ 和 $m$。$n$ 是给定 DAG(有向无环图)$G$ 的顶点数,$m$ 是 $G$ 的边数。接下来的 $m$ 行,每行有两个正整数 $i$ 和 $j$ 表示一条有向边 $(i,j)$。

输出格式


从第一行开始,每行输出一条路径。文件的最后一行是最少路径数。

输入输出样例

输入样例 #1

11 12
1 2
1 3
1 4
2 5
3 6
4 7
5 8
6 9
7 10
8 11
9 11
10 11

输出样例 #1

1 4 7 10 11
2 5 8
3 6 9
3

说明

对于 $100\%$ 的数据,$1\leq n\leq 150$,$1\leq m\leq 6000$。 由 @FlierKing 提供 SPJ