线下编译、运行都没有出错。可是提交到洛谷后就RE了 报错信息:Runtime Error. Received signal 11: Segmentation fault with invalid memory reference. 代码:
#include<bits/stdc++.h>
using namespace std;
bool ma[1010][1010];int n,m;//ma是存地图的
int blo[1010][1010];//代表每个坐标的答案
bool used[1010][1010],sused[1010][1010];//used代表是否被bfs遍历,sused是标志这次遍历到的点,结束后就会变成0
int sum;
struct poi{
int x,y;
};
queue<poi> b;
void bfscore(){
while(!b.empty()){
poi pn = b.front();b.pop();
if(!used[pn.x+1][pn.y] and pn.x+1<=n and ma[pn.x+1][pn.y]^ma[pn.x][pn.y]){
pn.x++;
used[pn.x][pn.y] = sused[pn.x][pn.y] = 1;
b.push(pn);sum++;
pn.x--;
}
if(!used[pn.x-1][pn.y] and pn.x-1>0 and ma[pn.x-1][pn.y]^ma[pn.x][pn.y]){
pn.x--;
used[pn.x][pn.y] = sused[pn.x][pn.y] = 1;
b.push(pn);sum++;
pn.x++;
}
if(!used[pn.x][pn.y+1] and pn.y+1<=n and ma[pn.x][pn.y+1]^ma[pn.x][pn.y]){
pn.y++;
used[pn.x][pn.y] = sused[pn.x][pn.y] = 1;
b.push(pn);sum++;
pn.y--;
}
if(!used[pn.x][pn.y-1] and pn.y-1>0 and ma[pn.x][pn.y-1]^ma[pn.x][pn.y]){
pn.y--;
used[pn.x][pn.y] = sused[pn.x][pn.y] = 1;
b.push(pn);sum++;
pn.y++;
}
}
}
int bfs(int plax,int play){
sum = 1;
poi starta;starta.x = plax,starta.y = play;
b.push(starta);
used[plax][play] = sused[plax][play] = 1;
bfscore();
for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)
if(sused[i][j]){
sused[i][j] = 0;
blo[i][j] = sum;
}
}
int main(){
cin>>n>>m;
char ina;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
ina = getchar();
if(ina != '0' and ina != '1'){
j--;
}
else ma[i][j] = ina-'0';
}
}
for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if(!used[i][j])bfs(i,j);
int inx,iny;
for(int i=1;i<=m;i++){
scanf("%d%d",&inx,&iny);
printf("%d\n",blo[inx][iny]);
}
return 0;
}