#L0665. 菜肴制作顺序

菜肴制作顺序

题目背景

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

题目描述

云顶大酒店为小美准备了 nn 道菜肴,按预估质量从高到低编号为 11nn,质量最高的菜肴编号为 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),必须先制作完 3344 才能制作 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 组数据,对于每组数据:

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

接下来 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 先于 2222 先于 3333 先于 11 制作,无论如何都不可能同时满足,因此无解。

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

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