poj 1111(注意临时变量的选取不要重复)
#包括牡蛎
#包括
# includecstring
使用命名空间标准;
茶数据[25][25];
布尔访问[25][25];
int r,c,a,b,结果;
结构节点{ 0
int x,y;
节点(int a,int b){ 0
x=a;
y=b;
}
};
const int dx[]={-1,0,1},dy[]={-1,0,1 };
void bfs(){ 0
memset(访问,假的,访问大小);
a-;
B-;
queueNodeq
q.push(节点(a,b));
访问[a][b]=真;
for(int I=0;i3;I){ 0
for(int j=0;JBOY3乐队;j ){
int x=a dx[I];
int y=b dy[j];
弯曲件标志=假
if((i==1j==1)||(dx[i]*dy[j]!=0))继续;
if(x0 | | x=r){ 0
标志=真
结果;
}
if(y0 | | y=c){ 0
标志=真
结果;
}
if(!标志){ 0
如果(数据[x][y]==' . '){
结果;
}
}
}
}
while(!q . empty()){ 0
int qx=q.front().x;
int qy=q.front().y;
q . pop();
for(int s=0;S3;s){ 0
for(int t=0;T3;t){ 0
if(s==1t==1)继续;
int qx _ s=qx dx[s];
int QY _ t=QY dy[t];
if(qx _ s0 | | qx _ s=r | | QY _ t0 | | QY _ t=c)继续;
if(数据[qx _ s][QY _ t]==' X '访问[qx _ s][QY _ t]==false){ 0
q.push(节点(qx_s,QY _ t));
访问[qx _ s][QY _ t]=真;
for(int I=0;i3;I){ 0
for(int j=0;JBOY3乐队;j ){
int x=qx _ s dx[I];
int y=QY _ t dy[j];
弯曲件标志=假
if((i==1j==1)||(dx[i]*dy[j]!=0))继续;
if(x0 | | x=r){ 0
标志=真
结果;
}
if(y0 | | y=c){ 0
标志=真
结果;
}
if(!标志){ 0
如果(数据[x][y]==' . '){
结果;
}
}
}
}
}
}
}
}
}
int main(){ 0
while(scanf('%d%d%d%d ',r,c,a,b)=4r){ 0
for(int I=0;IR;I){ 0
scanf("% s ",数据[I]);
}
结果=0;
bfs();
printf("% d \ n ",结果);
}
返回0;
}
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/117951.html