如果您的代码是这样的(在取出的时候标记mapp)
在加入队列的时候不标记。那么未标记的位置可能被再次加入队列
while(!sat.empty()){
EVA wei=sat.front();
sat.pop();
for(int i=0;i<8;i++){
EVA v;
v.temp=wei.temp+1;
v.x=fx[i]+wei.x;
v.y=fy[i]+wei.y;
if(v.x>=1 && v.x<=n && v.y>=1 && v.y<=m ){
if(mapp[v.x][v.y]==0){
mapp[v.x][v.y]=v.temp;
sat.push(v);
}
}
}
}