近年来,飓风和海啸展示了水的破坏力。然而,这种破坏力并不局限于海洋。大雨可能会引发洪水,摧毁人们的房屋和农田。科学家们试图利用复杂的模型来预测大雨过后水会积聚在哪里。
模拟丘陵地貌的方法之一是三角剖分,即使用三角形来近似地表。三角形的边完全由两个相邻的三角形共享,但位于区域边界的三角形除外,它们可能有一些边是不共享的。
假设你有一个地貌的三角剖分模型。现在开始下大雨——一些水流向大海,其余的水被地貌截留形成湖泊。你的任务是编写一个程序,确定形成了多少个湖泊以及每个湖泊的水位。假设雨量足够大,足以将所有湖泊填满至其最高水位。
对于任何湖泊,都可以用一艘任意小(但非零)的船在湖面上的任意两点之间航行(边界除外)。因此,如果两个湖泊仅共享深度为零的点(或一个点),它们被视为不同的湖泊。
输入格式
输入包含多个测试用例。每个测试用例的第一行包含两个整数 $p \ge 3$(点数)和 $s \ge 3$(三角剖分的边数)。接下来的 $p$ 行描述了三角剖分中的点。
每个点的描述以一个在该测试用例中唯一的双字母代码开头。代码后跟三个整数,描述点的格式为 $x\ y\ h$。其中 $x$ 和 $y$($-10000 \le x, y \le 10000$)是二维坐标,$h$($0 \le h \le 8848$)是该点海拔高度。
接下来的 $s$ 行描述了三角形的一条边。边的描述由两个不同的双字母代码组成,指定了该边的端点。这些线段在 $xy$ 平面上的投影满足以下条件: 除端点外,没有任何边与其他边相交。 点和边共同构成了一个单一连通区域的三角剖分。 * 区域内部没有“孔洞”(即边界形成单一的闭合多边形曲线)。
你可以认为所有在三角剖分区域之外的点,其高度都低于区域边界上最近的点。换句话说,如果水到达了区域的边界,它会自由流出。
输入的最后一行包含两个零。
输出格式
对于每个测试用例,显示用例编号,并按非递减顺序输出位于给定区域内所有不同湖泊的水位,每个水位占一行。水位即海拔高度。如果没有形成湖泊,则输出一个 0。请遵循样例输出的格式。
样例
输入 1
3 3 AA 0 0 0 BB 0 1 0 CC 1 0 0 AA BB AA CC BB CC 7 12 aa 1 1 5 bb 1 3 5 xX 0 2 10 XY 0 4 15 XZ 3 4 11 xy 0 0 15 xz 3 0 15 xX XZ XY XZ xX XY xX xy xX xz xz xy aa xX aa xy aa xz bb xX bb XY bb XZ 0 0
输出 1
Case 1: 0 Case 2: 10 10