0%

2025 United Kingdom and Ireland Programming Contest (UKIEPC 2025) 2025 英国 ICPC——J. Joust Sort(拓扑排序解决依赖排序问题)

题目大意

题目总结:J. Joust排序 (Joust Sort)

题目核心:
给定一个由小写字母组成的字符串 ,以及若干条字母之间的“大小关系”约束。要求根据这些约束对字符串进行重新排列。

规则说明:

  1. 强约束: 若给定 ,则在最终字符串中,所有字母 必须出现在所有字母 之前。

  2. 无约束: 若字母 和 之间没有直接或间接的约束关系(既不是 也不是 ),则它们在字符串中的位置可以任意交错

  3. 合法性: 如果约束关系中存在冲突(如环状依赖 且 ),则判定为无法排序。

输出要求:

  • 输出满足所有约束的任意一种排列方案。

  • 若不存在合法方案,输出 IMPOSSIBLE


样例解释:

  • 样例 1:

  • 输入:m > i, n < i, i > o,字符串 minion

  • 推导:由 且 (即 )可知, 和 都在 之前。由 (即 )可知, 在 之前。

  • 关系链:。

  • 结果:noniim 符合 。

  • 样例 2:

  • 输入:b < n,字符串 banana

  • 推导:仅要求所有的 b 在所有的 n 之前。对字母 a 没有约束。

  • 结果:banana。此时所有的 b(位置0)确实在所有的 n(位置2, 4)之前,a 可以穿插其中。

  • 样例 3:

  • 输入:包含多条重复及推导关系,如 且 。

  • 推导:关系链为 。

  • 结果:nnnbaaama。所有的 nb 前,所有的 ba 前。

  • 样例 4:

  • 输入:a < b, b < a

  • 推导:逻辑冲突,存在环。

  • 结果:IMPOSSIBLE

思路讲解

拓扑排序。

AC代码

AC
https://codeforces.com/gym/106157/submission/361649348

心路历程(WA,TLE,MLE……)