记录编号 | 409740 | 评测结果 | AAAAAAAAAAAAAAAA | ||
---|---|---|---|---|---|
题目名称 | [POI 1999] 位图 | 最终得分 | 100 | ||
用户昵称 | 是否通过 | 通过 | |||
代码语言 | C++ | 运行时间 | 0.000 s | ||
提交时间 | 2017-05-28 21:32:29 | 内存使用 | 0.05 MiB | ||
#include <iostream> #include <cstdio> #include <cstdlib> #include <cmath> #include <cstring> using namespace std; const int MAX=183; const int INF=0x7FFFFFFF; const int dx[4]={0,0,-1,1},dy[4]={-1,1,0,0}; struct point { int x,y; }; int N,M,Head,Tail; int dist[MAX][MAX],bit[MAX][MAX]; point Que[MAX*MAX]; void init() { int i,j,c; freopen("bit.in","r",stdin); freopen("bit.out","w",stdout); scanf("%d%d",&N,&M); Head=0;Tail=-1; for (i=1;i<=N;i++) { for (j=1;j<=M;j++) { dist[i][j]=INF; c=getchar(); while (c==10 || c==13) c=getchar(); bit[i][j]=c-'0'; if (c=='1') { Que[++Tail].x=i; Que[Tail].y=j; dist[i][j]=0; } } } } void BFS() { point i,j; int k; while (Head<=Tail) { i=Que[Head++]; for (k=0;k<4;k++) { j.x=i.x+dx[k]; j.y=i.y+dy[k]; if (1<=j.x && j.x <=N && 1<=j.y && j.y<=M && dist[i.x][i.y]+1<dist[j.x][j.y]) { dist[j.x][j.y]=dist[i.x][i.y]+1; Que[++Tail]=j; } } } } void print() { int i,j; for (i=1;i<=N;i++) { for (j=1;j<=M;j++) printf("%d ",dist[i][j]); putchar('\n'); } } int x() { init(); BFS(); print(); return 0; } int a=x(); int main(){;}