#L0665. 菜肴制作顺序

菜肴制作顺序

题目背景

美食评审员小美受邀到云顶大酒店品鉴菜肴,酒店方面希望以最合理的顺序上菜,让评审尽早尝到高质量的作品。

题目描述

云顶大酒店为小美准备了 nn 道菜肴,按预估质量从高到低编号为 11 到 nn,质量最高的菜肴编号为 11。

由于口味搭配的原因,某些菜肴必须在另一些菜肴之前制作:共有 mm 条形如「ii 号菜肴必须先于 jj 号菜肴制作」的限制,简写为 (i,j)(i,j)。

酒店希望求出一个最优的制作顺序,让小美尽量先吃到质量高的菜肴:

  1. 在满足所有限制的前提下,11 号菜肴尽量优先制作;

  2. 在满足所有限制、且 11 号菜肴尽量优先制作的前提下,22 号菜肴尽量优先制作;

  3. 在满足所有限制、且 11 号、22 号菜肴尽量优先的前提下,33 号菜肴尽量优先制作;

  4. 以此类推。

例 1:共 44 道菜肴,两条限制 (3,1)(3,1)、(4,1)(4,1),那么制作顺序是 3,4,1,23,4,1,2。

例 2:共 55 道菜肴,两条限制 (5,2)(5,2)、(4,3)(4,3),那么制作顺序是 1,5,2,4,31,5,2,4,3。

例 1 中,首先考虑 11:由于限制 (3,1)(3,1) 和 (4,1)(4,1),必须先制作完 33 和 44 才能制作 11;而由第 3 条,33 号应尽量比 44 号优先,故前三道菜的顺序是 3,4,13,4,1;再考虑 22,得到最终顺序 3,4,1,23,4,1,2。

例 2 中,先制作 11 不违背限制;考虑 22 时受 (5,2)(5,2) 限制,先制作 55 再制作 22;考虑 33 时受 (4,3)(4,3) 限制,先制作 44 再制作 33,最终顺序为 1,5,2,4,31,5,2,4,3。

请输出这个最优的菜肴制作顺序。若无解,输出 Impossible!(首字母大写,其余字母小写)。

输入格式

第一行一个正整数 tt,表示数据组数。接下来是 tt 组数据,对于每组数据:

第一行两个用空格分开的正整数 nn 和 mm,分别表示菜肴数目和限制条数。

接下来 mm 行,每行两个正整数 x,yx, y,表示「xx 号菜肴必须先于 yy 号菜肴制作」的限制。

输出格式

输出共 tt 行,每行 nn 个用空格分开的整数,表示该组数据最优的菜肴制作顺序;若无解,该行输出 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

</p>

提示

样例解释:第二组数据同时要求 11 先于 22、22 先于 33、33 先于 11 制作,无论如何都不可能同时满足,因此无解。

数据范围:100%100\% 的数据满足 n,m≤105n, m \le 10^5,1≤t≤31 \le t \le 3;mm 条限制中可能存在完全相同的限制。

难度 普及+/提高-
通过率 —
尝试 0
通过 0
ID
1393
类型
传统题
Time Limit
1000ms
Memory Limit
125MiB
上传者