A41306.梦神的大平层
普及/提高-
通过率:0%
时间限制:1.00s
内存限制:128MB
题目描述
Yuilice最近一直在失眠,一夜未眠都是非常正常的事情,所以他去向梦神求助,希望能够通过梦神的帮助解决这个问题。
梦神给了Yuilice一个难题,让他每天睡觉前去解题从而每天都睡得香香的,但是坏心眼的的楠楠因为晚上打CS找不到开黑的伙伴,所以他决定解开这个难题从而让Yuilice再次失眠,彻夜在米垃圾被折磨。
现在为了保护Yuilice的好梦,你需要抢在楠楠之前解开这道谜题,打开题目之后,你惊讶的发现问题居然是梦神的大平层设计图。
现在已知梦神的大平层可以由一个N×M的二维矩阵来表示,同时在矩阵的每一个格子当中,都会有一个数字ai,j(1≤ai,j≤15),代表在该格当中哪个方向有着墙壁(每个格子都有自身的四面墙壁)。
例如数字5
,可以被视为是二进制的0101
:
- 第一个数字
0
代表北面没有墙壁 - 第二个数字
1
代表东面有墙壁 - 第三个数字
0
代表南面没有墙壁 - 第四格数字
1
代表西面有墙壁。
现在已知在大平层当中,每个房间会被墙壁所包围起来(但是房间内可能存在墙壁而不是刚好包围),请你求出每个房间所占的方格总数,并且按照从大到小的顺序进行输出每个房间的所占方格总数。
输入格式
第一行共会输入两个整数N,M(1≤N,M≤103),代表大平层的二维矩阵。
随后N行,每行输入M个整数ai,j,代表每个方格的状态。
输出格式
按照从大到小的顺序输出每个房间的所占方格总数,每两个数字之间用空格隔开。
输入输出样例
输入#1
4 5 9 14 11 12 13 5 15 11 6 7 5 9 14 9 14 3 2 14 3 14
输出#1
9 4 4 2 1
输入#2
3 3 9 8 12 5 5 5 7 7 7
输出#2
9
输入#3
3 3 9 8 13 15 7 15 15 15 6
输出#3
3 1 1 1 1 1 1
说明/提示
说明/提示
题目保证输入数据当中所有地图边缘都一定会有墙壁,但并不保证每个房间内部不会有墙壁存在,但是我们默认在最外围有一圈墙壁围着大平层。
注: 假如两个格子之间有一堵墙,那么两个格子就不能直接来往。
对于 50% 的数据,1≤N,M≤100
对于 100% 的数据,1≤N,M≤103
对于第三个样例,可以转化为以下的图,
其中1,2,5
三个格子之间相互不存在墙壁,属于一个房间,其他每一个格子各算作一个房间