又是玄学WA————
50分代码:
#include <stdio.h>
#include <queue>
#define MAXN 128
using std::queue;
struct edge{
int x,y;
};
int n,m,STEP;
signed dx[] = {-1,1,-1,0,1,1,0,-1};
signed dy[] = {0,0,-1,-1,-1,1,1,1};
char map[MAXN][MAXN];
queue<edge> q;
void BFS(int x,int y){
STEP ++;
map[x][y] = '.';
q.push((edge){
x,y
});
while(!q.empty()){
edge wx = q.front();
q.pop();
for(int i = 0;i < 8;i ++){
int nx = wx.x+dx[i];
int ny = wx.y+dy[i];
if(nx > -1 && ny > -1 && nx < n && ny < m && map[nx][ny] == 'W'){
map[nx][ny] = '.';
q.push((edge){
nx,ny
});
}
}
}
return ;
}
signed main(){
scanf("%d%d",&n,&m);
for(int i = 0;i < n;i ++)
gets(map[i]);
for(int i = 0;i < n;i ++)
for(int j = 0;j < m;j ++)
if(map[i][j] == 'W')
BFS(i,j);
printf("%d\n",STEP);
return 0;
}
100 分代码:
#include <iostream>
#include <queue>
#define MAXN 128
using std::queue;
using std::cin;
struct edge{
int x,y;
};
int n,m,STEP;
signed dx[] = {-1,1,-1,0,1,1,0,-1};
signed dy[] = {0,0,-1,-1,-1,1,1,1};
char map[MAXN][MAXN];
queue<edge> q;
void BFS(int x,int y){
STEP ++;
map[x][y] = '.';
q.push((edge){
x,y
});
while(!q.empty()){
edge wx = q.front();
q.pop();
for(int i = 0;i < 8;i ++){
int nx = wx.x+dx[i];
int ny = wx.y+dy[i];
if(nx > -1 && ny > -1 && nx < n && ny < m && map[nx][ny] == 'W'){
map[nx][ny] = '.';
q.push((edge){
nx,ny
});
}
}
}
return ;
}
signed main(){
scanf("%d%d",&n,&m);
char awa;
for(int i = 0;i < n;i ++)
for(int j = 0;j < m;j ++)
cin >> awa,map[i][j] = awa;
for(int i = 0;i < n;i ++)
for(int j = 0;j < m;j ++)
if(map[i][j] == 'W')
BFS(i,j);
printf("%d\n",STEP);
return 0;
}
为什么会这样呢?一个WA一个AC