P15915 [TOPC 2024] Kingdom' s Development Plan

题目描述

托普卡里亚王国计划开展一系列发展项目以提升其基础设施。每个项目都有特定的前置条件,必须在项目开始之前完成。发展部请你帮助确定一个可行的顺序,使得所有项目都能按顺序完成。 给定: - $n$,表示项目的数量,编号从 $1$ 到 $n$。 - $m$,表示这些项目之间的前置关系数量。 - $m$ 个关系对,每个对 $(a, b)$ 表示项目 $a$ 必须在项目 $b$ 开始之前完成。 你的任务是确定一个所有项目都能完成的顺序。如果由于循环依赖而无法完成所有项目,则输出 **IMPOSSIBLE**。如果存在多个有效顺序,请输出字典序最小的一个。

输入格式

第一行包含两个整数 $n$ 和 $m$,分别表示项目的数量和前置关系的数量。接下来的 $m$ 行,每行包含两个整数 $a$ 和 $b$,表示一个前置关系对,即项目 $a$ 必须在项目 $b$ 之前完成。

输出格式

如果不可能完成,则输出 **IMPOSSIBLE**。如果可能完成所有项目,则输出一行包含 $n$ 个整数,表示一个有效的项目完成顺序。如果存在多个可能的顺序,请输出字典序最小的顺序。一个顺序的字典序比另一个顺序小,当且仅当在它们第一个不同的位置上,前一个顺序的项目编号小于后一个顺序的项目编号。

说明/提示

- $1 \le n \le 10^5$ - $0 \le m \le 2 \times 10^5$ - $a, b \in \{1, 2, \dots, n\}$ - $a \ne b$ - 给定的关系对没有重复。 翻译由 DeepSeek V3.2 完成