A41306.梦神的大平层

普及/提高-

官方

通过率:0%

时间限制:1.00s

内存限制:128MB

题目描述

Yuilice最近一直在失眠,一夜未眠都是非常正常的事情,所以他去向梦神求助,希望能够通过梦神的帮助解决这个问题。

梦神给了Yuilice一个难题,让他每天睡觉前去解题从而每天都睡得香香的,但是坏心眼的的楠楠因为晚上打CS找不到开黑的伙伴,所以他决定解开这个难题从而让Yuilice再次失眠,彻夜在米垃圾被折磨。

现在为了保护Yuilice的好梦,你需要抢在楠楠之前解开这道谜题,打开题目之后,你惊讶的发现问题居然是梦神的大平层设计图。

现在已知梦神的大平层可以由一个N×MN \times M的二维矩阵来表示,同时在矩阵的每一个格子当中,都会有一个数字ai,j(1ai,j15)a_{i,j}(1 \leq a_{i,j} \leq 15),代表在该格当中哪个方向有着墙壁(每个格子都有自身的四面墙壁)。

例如数字5,可以被视为是二进制的0101:

  • 第一个数字0代表北面没有墙壁
  • 第二个数字1代表东面有墙壁
  • 第三个数字0代表南面没有墙壁
  • 第四格数字1代表西面有墙壁。

现在已知在大平层当中,每个房间会被墙壁所包围起来(但是房间内可能存在墙壁而不是刚好包围),请你求出每个房间所占的方格总数,并且按照从大到小的顺序进行输出每个房间的所占方格总数。

输入格式

第一行共会输入两个整数N,M(1N,M103)N,M(1 \leq N,M \leq 10^3),代表大平层的二维矩阵。

随后NN行,每行输入MM个整数ai,ja_{i,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%50 \% 的数据,1N,M1001 \le N, M \le 100

对于 100%100 \% 的数据,1N,M1031 \le N, M \le 10^3

对于第三个样例,可以转化为以下的图,

其中1,2,5 三个格子之间相互不存在墙壁,属于一个房间,其他每一个格子各算作一个房间

首页