#P1002. 流程图(flowchart)

流程图(flowchart)

流程图(flowchart)

题目描述

一套“流程图”是由一系列容器和管道组成的系统。该系统由 kk 个容器组成,用 1 到 kk 的数字表示。如果从 1 号容器开始注水,确定各个容器被注满的顺序。我们可以用一个 nnmm 列的字符矩阵来描述这样一套“流程图”。图中的容器呈矩形状,容器和管道的轮廓用以下字符表示:

  • ‘-’:如果是轮廓的水平部分;
  • ‘|’:如果是轮廓的垂直部分;
  • ‘+’:如果是轮廓的水平和垂直部分连接的地方。

一个例外是容器和管道连接的地方。在这种情况下,容器轮廓占主导地位。如果在每个容器内的任意位置出现有连续一串数字,则该串数代表所属容器的编号标签。容器矩阵中的所有其他字符都用点‘.’表示。

除了标有 1 的容器外,所有容器都有恰好一根供应管道从其上方进入容器。标有 1 的容器没有供应管道,注水到 1 号容器并不通过管道。容器可能有多个(也可能没有)排放管道从其侧面离开容器。排放管道离开容器的位置在矩阵中相互不同的行出现。管道直接连接两个容器,这意味着不可能将管道分开或将多个管道连接在一起,也没有两条管道会相交。从源头到目的地容器的途中,管道总是下降到下一行,或者保持在同一行。

水进入一个容器后,会一直不断流入,直到该容器满了。如果水位达到排放管道的水平,水就会通过那个管道流出,直到该管道通向的容器都被填满。请确定容器将被填满的顺序。

测试数据保证

  • 每个'+'字符周围恰好有一个'—'在左侧或右侧,以及一个'|'在上方或下方,而其他所有相邻字符在四个方向上都是'.'。
  • 管道与容器轮廓相邻的唯一地方是管道的入口或出口。也就是说,管道不会紧贴容器运行,除非是在连接点。

输入格式

输入第一行为正整数 nnmm,表示整张图的尺寸。接下来的 nn 行,每行包含 mm 个字符,描述了整个系统。

输出格式

输出共 kk 行。第 ii 行包含第 ii 个填满的容器的编号标签。保证答案一定存在并且唯一。

样例

样例 1 输入

8 10
..........
.......+-+
...+---|1|
...|...+-+
...|......
..+-+.....
..|2|.....
..+-+.....

样例 1 输出

2
1

样例 1 解释

首先填满 2 号容器,然后填满 1 号容器。

数据范围

测试点编号 特殊性质
1 ~ 7 n100n \leq 100m100m \leq 100
8 ~ 10 无特殊性质限制

保证所有数据:1n,m10001 \leq n, m \leq 1000