有 n 道菜,编号 1 ∼ n,编号越小质量越高。给定 m 条限制 (i, j),表示 i 必须先于 j 制作。 求一个最优制作顺序,使得:
1.满足所有限制的前提下,1 号尽量靠前;
2.在满足第 1 条的前提下,2 号尽量靠前; 3.在满足前两条的前提下,3 号尽量靠前; 依此类推。即:编号小的菜尽量先做。
第一行是一个正整数 t,表示数据组数。接下来是 t 组数据。对于每组数据:第一行两个用空格分开的正整数 n 和 m(n, m ≤ 10^5),分别表示菜肴数目和制作顺序限制的条目数。接下来 m 行(m 条限制中可能存在完全相同的限制),每行两个正整数 x, y,表示 x 号菜肴必须先于 y 号菜肴制作的限制。
输出仅包含 t (1 ≤ t ≤ 3)行,每行 n 个整数,表示最优的菜肴制作顺序,或者 Impossible! 表示无解。
3 5 4 5 4 5 3 4 2 3 2 3 3 1 2 2 3 3 1 5 2 5 2 4 3
1 5 3 4 2 Impossible! 1 5 2 4 3
第二组数据同时要求菜肴 1 先于菜肴 2 制作,菜肴 2 先于菜肴 3 制作,菜肴 3 先于菜肴 1 制作,而这是无论如何也不可能满足的,从而导致无解。