小慕最近在学习围棋,他发现围棋棋盘由纵横各19条线垂直相交组成,棋盘上一共19x19=361个交点,对弈双方一方执白棋,一方执黑棋,落子时只能将棋子置于交点上。 “”是围棋中很重要的一个概念,某个棋子有几口气,是指其上下左右方向四个相邻的交叉点中,有几个交叉点没有棋子,由此可知: 1、在棋盘的边缘上的棋子最多有3口气(黑1),在棋盘角点的棋子最多有2口气(黑2),其它情况最多有4口气(白1) 2、如果多个相同颜色的棋子连在一起,那么这些棋子会共享它们的气,即这些棋子共同的气的总数,等于这些棋子上下左右方向所有相邻的交叉点中,没有棋子的交叉点的总数(注意:这些棋子本身占据的交叉点不算在内,并且这些棋子共同占据的交叉点相邻的交叉点中,如果有相同颜色的棋子,那么这些交叉点也不会计入气中,因为它们是棋子的一部分,而不是气)。下图中的黑棋三子连在一起,共同的气共有7口(图中标记为X的位置) 3、如果某块棋子(可能是单个或多个棋子)的气数为0,那么这些棋子就处于无气状态,应当立即被从棋盘上提走。提走棋子后,可能会使得其它棋子获得新的气。 现在,小慕遇到了一个问题:给定一个围棋棋盘上若干棋子的分布,他想知道棋盘上所有棋子各自的气数分别是多少。注意,这里的棋子气数是针对每一个单独的棋子而言的,即每个棋子所在连通块的气数,就是该棋子自身的气数。
提示:带虚线的词点一下有通俗解释。
输入描述
<p> 输入包括两行数据,如: </p> <p> 0 5 8 9 9 10 </p> <p> 5 0 9 9 9 8 </p> <p> 1、每行数据以空格分隔,数据个数是2的整数倍,每两个数是一组,代表棋子在棋盘上的坐标 </p> <p> 2、坐标的原点在棋盘左上角点,第一个值是行号,范围从0到18;第二个值是列号,范围从0到18 </p> <p> 3、举例说明:第一行数据表示三个坐标(0, 5)、(8, 9)、(9, 10) </p> <p> 4、第一行表示黑棋的坐标,第二行表示白棋的坐标。 </p> <p> 5、题目保证输入两行数据,无空行且每行按前文要求是偶数个,每个坐标不会超出棋盘范围。 </p>
输出描述
8 7 两个数字以空格分隔,第一个数代表黑棋的气数,第二个数代表白棋的气数。
示例
示例 1
输入
0 5 8 9 9 10 5 0 9 9 9 8
输出
8 7
时间限制 1000 ms · 内存限制 128 MB