1 条题解
-
0
C :
#include<stdio.h> int main(void) { int k,x; scanf("%d",&x); for(k=1;k<=x;k++) {int i,j,m,n,w,i1,i2,i3,j1,j2,j3,f=0,r=1; char mg[105][105]; int zg[105][105],ins[105][105],tx[4]={0,1,0,-1},ty[4]={1,0,-1,0},q[10005]; scanf("%d%d",&n,&m); getchar(); for(i=0;i<n;i++) { for(j=0;j<m;j++) scanf("%c",&mg[i][j]); getchar();} for(i=0;i<n;i++) for(j=0;j<m;j++) { zg[i][j]=0; ins[i][j]=0; if(mg[i][j]=='S') {i1=i;j1=j;} } q[f]=i1*m+j1; zg[i1][j1]=1; while(f<r) {w=q[f]; i2=w/m;j2=w%m; f++; for(i=0;i<4;i++) { i3=i2+tx[i];j3=j2+ty[i]; if(i3>=0&&i3<n&&j3>=0&&j3<m&&(mg[i3][j3]!='#')&&(!zg[i3][j3])) {zg[i3][j3]=1; ins[i3][j3]=ins[i2][j2]+1; q[r]=i3*m+j3; r++; } } } for(i=0;i<n;i++) for(j=0;j<m;j++) if(mg[i][j]=='E') if(ins[i][j]!=0) printf("%d\n",ins[i][j]); else printf("-1\n"); } return 0; }
- 1
信息
- ID
- 1658
- 时间
- 1000ms
- 内存
- 32MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者