记录编号 548487 评测结果 AAAAAAAAAAAAAAAA
题目名称 [POI 1999] 位图 最终得分 100
用户昵称 GravatarZooxTark➲ 是否通过 通过
代码语言 C++ 运行时间 2.831 s
提交时间 2020-01-20 17:01:52 内存使用 13.94 MiB
显示代码纯文本
#define dis(a,b,c,d) (((a > c)? a - c : c - a) + ((b > d)? b - d : d - b))

#include <iostream>
#include <cstdio>
#include <limits.h>

using namespace std;

bool bitmap[182][182];
int ct;
struct tagwhit
{
    int x,y;
}white[33124];

int f(int x,int y)
{
    if(bitmap[x][y])
        return 0;
    else
    {
        int iTemp = INT_MAX,t;
        for(int i = 0;i < ct;i++)
        {
            t = dis(x,y,white[i].x,white[i].y);
            if(t < iTemp)
            {
                iTemp = t;
            }
        }
        return iTemp;
    }
}

int main()
{
    freopen("bit.in","r",stdin);
    freopen("bit.out","w",stdout);
    int m,n;
    cin >> n >> m;
    char bit;
    for(int i = 0;i < n;i++)
    {
        for(int j = 0;j < m;j++)
        {
            cin >> bit;
            if(bit == '1')
            {
                bitmap[i][j] = true;
                white[ct].x = i;
                white[ct].y = j;
                ct++;
            }
        }
    }
    for(int i = 0;i < n;i++)
    {
        for(int j = 0;j < m;j++)
        {
            cout << f(i,j) << " ";
        }
        cout << endl;
    }
    return 0;
}