P14999 [Nordic OI 2019] Thieves and Prisons

题目背景

Special Judge 来自于 [LibreOJ](https://loj.ac/p/4248)。

题目描述

有 $n$ 个盗贼和 $k$ 座监狱。一个盗贼要么正在逃亡,要么已被关押在某座监狱中。初始时,所有盗贼都在逃亡。 一个正在逃亡的盗贼可以被警察抓住,随后被关进其中一座监狱。一个正在逃亡的盗贼也可以打开某座监狱的大门。当大门被打开时,关押在该监狱中的所有盗贼都会被释放。打开一座空监狱的大门是毫无意义的,因此这种情况永远不会发生。 你得到一个包含 $m$ 个事件的列表,事件的格式为“盗贼 $x$ 被抓住”或“盗贼 $x$ 打开了某座监狱的大门”。你的任务是找出一个符合这些事件的监狱分配方案,或者判断这是不可能的。

输入格式

第一行输入包含三个整数 $n$、$k$ 和 $m$:分别表示盗贼的数量、监狱的数量以及事件的数量。盗贼和监狱的编号分别为 $1, 2, \ldots, n$ 和 $1, 2, \ldots, k$。 此后是 $m$ 行,描述各个事件。每个事件是“C $x$”(盗贼 $x$ 被抓住)或“O $x$”(盗贼 $x$ 打开了某座监狱的大门)。

输出格式

输出一个有效的监狱分配方案,由 $m$ 个整数组成:每个整数对应相应事件所涉及的监狱。如果不存在解决方案,则输出“IMPOSSIBLE”。

说明/提示

**子任务 1(8 分)** - $1 \leq n, m \leq 10$ - $k = 2$ **子任务 2(13 分)** - $1 \leq n, k, m \leq 10^5$ - $n = k$ **子任务 3(14 分)** - $1 \leq n, m \leq 10^5$ - $k = 2$ **子任务 4(18 分)** - $1 \leq n, k, m \leq 500$ **子任务 5(47 分)** - $1 \leq n, k, m \leq 10^5$ 翻译由 DeepSeek V3 完成