#L0665. 菜肴制作顺序
菜肴制作顺序
题目背景
美食评审员小美受邀到云顶大酒店品鉴菜肴,酒店方面希望以最合理的顺序上菜,让评审尽早尝到高质量的作品。
题目描述
云顶大酒店为小美准备了 道菜肴,按预估质量从高到低编号为 到 ,质量最高的菜肴编号为 。
由于口味搭配的原因,某些菜肴必须在另一些菜肴之前制作:共有 条形如「 号菜肴必须先于 号菜肴制作」的限制,简写为 。
酒店希望求出一个最优的制作顺序,让小美尽量先吃到质量高的菜肴:
-
在满足所有限制的前提下, 号菜肴尽量优先制作;
-
在满足所有限制、且 号菜肴尽量优先制作的前提下, 号菜肴尽量优先制作;
-
在满足所有限制、且 号、 号菜肴尽量优先的前提下, 号菜肴尽量优先制作;
-
以此类推。
例 1:共 道菜肴,两条限制 、,那么制作顺序是 。
例 2:共 道菜肴,两条限制 、,那么制作顺序是 。
例 1 中,首先考虑 :由于限制 和 ,必须先制作完 和 才能制作 ;而由第 3 条, 号应尽量比 号优先,故前三道菜的顺序是 ;再考虑 ,得到最终顺序 。
例 2 中,先制作 不违背限制;考虑 时受 限制,先制作 再制作 ;考虑 时受 限制,先制作 再制作 ,最终顺序为 。
请输出这个最优的菜肴制作顺序。若无解,输出 Impossible!(首字母大写,其余字母小写)。
输入格式
第一行一个正整数 ,表示数据组数。接下来是 组数据,对于每组数据:
第一行两个用空格分开的正整数 和 ,分别表示菜肴数目和限制条数。
接下来 行,每行两个正整数 ,表示「 号菜肴必须先于 号菜肴制作」的限制。
输出格式
输出共 行,每行 个用空格分开的整数,表示该组数据最优的菜肴制作顺序;若无解,该行输出 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 31 5 3 4 2
Impossible!
1 5 2 4 3
</p>
提示
样例解释:第二组数据同时要求 先于 、 先于 、 先于 制作,无论如何都不可能同时满足,因此无解。
数据范围: 的数据满足 ,; 条限制中可能存在完全相同的限制。
- ID
- 1393
- 类型
- 传统题
- Time Limit
- 1000ms
- Memory Limit
- 125MiB
- 上传者