记录编号 548943 评测结果 AAAAAAAAAAAAAAAA
题目名称 [POI 1999] 位图 最终得分 100
用户昵称 Gravatar发光二向箔 是否通过 通过
代码语言 C++ 运行时间 0.123 s
提交时间 2020-02-03 11:10:52 内存使用 10.49 MiB
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <queue>
using namespace std;
struct code {
	short x,y,bu;
};
queue<code>p;
code afo,sb;
char c[183][183];
short vis[183][183]={0},n,m,q,w,f[183][183]={0},xx,yy,bubu;
void bfs (code ca) {
	xx=ca.x;yy=ca.y;bubu=ca.bu;
	if (vis[xx][yy]==1) {
		return;
//		if (bubu<f[xx][yy]) {
//			f[xx][yy]=bubu;
//		}
//		else {
//			return ;
//		}
	}
	vis[xx][yy]=1;
	f[xx][yy]=bubu;
	sb.bu=bubu+1;
	if (xx<n) {
		sb.x=xx+1;
		sb.y=yy;
		p.push(sb);
	}
	if (yy<m) {
		sb.x=xx;
		sb.y=yy+1;
		p.push(sb);
	}
	if (xx>1) {
		sb.x=xx-1;
		sb.y=yy;
		p.push(sb);
	}
	if (yy>1) {
		sb.x=xx;
		sb.y=yy-1;
		p.push(sb);
	}
}
int gain()
{
	freopen("bit.in","r",stdin);
	freopen("bit.out","w",stdout);
	cin>>n>>m;
	for (q=1;q<=n;q++) {
		for (w=1;w<=m;w++) {
			cin>>c[q][w];
			if (c[q][w]=='1') {
				afo.x=q;afo.y=w;
				afo.bu=0;
				p.push(afo);
			}
		}
	}
	while (p.size()!=0) {
		bfs(p.front());
		p.pop();
	}
	for (q=1;q<=n;q++) {
		for (w=1;w<=m;w++) {
			printf("%hd ",f[q][w]);
		}
		printf("\n");
	}
	return 0;
}
int ss=gain();
int main(){;}