CF1105D Kilani and the Game

题目描述

有一个n行m列的棋盘和k个玩家,玩家从1到k编号。棋盘上每一格有可能是空格(用'.'表示)、墙(用'#'表示)或者某个玩家的城堡(用该玩家的编号表示)。从一个格子可以到任意一个与它有公共边的格子。 玩家i在一步操作内可以这样做: 1.找到所有与自己的任意一个城堡中间有一条长度不大于a[i]路线的空格(该路线上只能有空格和自己的城堡)。 2.把所有这样的格子都建成自己的城堡。 从玩家1开始,大家轮流操作。当任何人都无法执行操作时,游戏结束。 问:当游戏结束时,每个玩家分别有几座城堡?

输入格式

第一行输入n,m,k,分别为:棋盘行数,棋盘列数和玩家个数。 第二行输入k个数,分别为第1~k个玩家对应的a[i]值。 下面n行,输入棋盘。

输出格式

输出k个数,分别为k个玩家在游戏结束时拥有的城堡数。

说明/提示

The picture below show the game before it started, the game after the first round and game after the second round in the first example: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1105D/f319fcf8ae2c7e81c13be67f0686992b1b32ad55.png)In the second example, the first player is "blocked" so he will not capture new cells for the entire game. All other player will expand up during the first two rounds and in the third round only the second player will move to the left.