P5053 [COCI 2017/2018 #7] Clickbait
题目描述
在上网的时候,Slavko遇到了一个广告,这个广告上面有一个由容器和管道组成的系统(如图是一个系统的例子)和一行字:“如果往编号为1的容器里注水,请确定这些容器被注满水的顺序。”
这个系统包含K个编号为1到K的容器,并且我们可以用一个N×M的矩阵来描述它。**这些容器的形状为长方形**。容器和管道的轮廓将用这些字符表示:
- 如果字符为‘-’,那么这个位置是容器和管道的轮廓的水平部分。
- 如果字符为‘|’,那么这个位置是容器和管道的轮廓的垂直部分。
- 如果字符为‘+’,那么这个位置同时是容器和管道的轮廓的水平和垂直部分。(即容器的四个角,管道的拐弯部分),一个例外是容器与管道的相交部分,在这个位置不使用+。
在每一个容器内的某个位置内,都存在一个表示这个容器编号的数字串。矩阵内既不是容器和管道的轮廓,又不是表示容器编号的数字串的位置上的字符为'.'。
除了编号为1的容器以外,所有的容器的**顶部都接入且只接入了一条可以使水进入容器的**管道。编号为1的容器的顶部没有管道。
每个容器的**侧面**可以接入多条(也可以没有)可以使水流出容器的管道。**没有两个可以使水流出容器的管道与容器的连接处在同一个高度。**
管道必须有方向的连接两个容器,这也就意味着一条管道**不能**在某些地方分成两条管道,或是两条管道交汇成一条管道,并且没有两条管道会相交。并且管道永远不会向上拐弯,所以可以保证管道里的水可以正常的向下流动并且流入对应接入的容器里。
水只能进入没有被装满水的容器。如果一个容器中的水位达到了可以使水流出的管道的高度,水将会流入这个管道的另一端所接入的容器里,直到那个容器满了为止。
请帮助Slavko确定这些容器被注满水的顺序。
**请注意:**
- 在矩阵中,每一个字符'+'都**有且仅有一个**'-'字符在其左边或右边与其相邻,并且**有且仅有一个**'|'字符在其上边或下边与其相邻。其余的与其相邻的字符将均为'.'。
- 在字符矩阵中,管道与容器轮廓相邻的唯一可能的位置是管道与容器连接的位置。换句话说,除了管道与容器连接的情况,管道不可能与容器相邻。在与容器连接的位置,管道使水流入容器的一端用'|'标识,使水流出容器的一端用'-'标识。
输入格式
第一行,两个整数N,M(1≤N,M≤1000),表示矩阵的大小。
接下来的N行,每行M个字符,描述了如题目所述的容器系统。
输出格式
你必须输出K行。第i行表示第i个被注满水的容器的编号。输入保证存在唯一解。
说明
对于$70%$的数据,满足N,M≤100。
样例1的解释:
开始向容器1注水。
容器1中的水位升高,并且在某个时刻达到通向容器2的管道的高度。水流进管道并最终流向容器2,直到容器2装满水为止。
此后,容器1中的水位继续升高,直到达到通向容器3的管道的高度,水流进管道并最终流向容器3,直到容器3装满水为止。
最后,容器1中的水位持续升高,直到容器1装满水。
说明/提示
In test cases worth 70% of total points, it will hold N, M ≤ 100.
**Clarification of the first test case:**
Container 1 starts filling up with water.
The water level in container 1 grows, and in one moment reaches the level of the discharge pipe leading to container 2. The water flows through the pipe until container 2 fills up.
After that, the water level in container 1 keeps growing until it reaches the level of the discharge pipe leading to container 3, which fills up next.
Finally, the water level in container 1 keeps growing and the container fills up.