莫名其妙的编译错误,本地也是这样,而且显示不了错误行:

#include<bits/stdc++.h>
using namespace std;
int T,n,m,q;
const int N=20001;
static char a[N][N],b[N][N];
static int l[N][N],col,lv;
static bool c[N][N];
static short co[N][N];
int dfs(int x,int y,int road,int way){
if(road==1)return 1;
int ans=1;
if(x-1>0&&b[x-1][y]!=0&&c[x-1][y]==0&&(road==3||(road==2&&way==1))){
if(co[x-1][y]==0){
c[x-1][y]=1;
ans+=dfs(x-1,y,road,1);
}
else{
if(co[x-1][y]!=col&&l[x-1][y]<=lv){
ans+=1;
}
}
}
if(y-1>0&&a[x][y-1]!=0&&c[x][y-1]==0&&(road==3||(road==2&&way==2))){
if(co[x][y-1]==0){
c[x][y-1]=1;
ans+=dfs(x,y-1,road,2);
}
else{
if(co[x][y-1]!=col&&l[x][y-1]<=lv){
ans+=1;
}
}
}
if(y+1<=m&&a[x][y]!=0&&c[x][y+1]==0&&(road==3||(road==2&&way==3))){
if(co[x][y+1]==0){
c[x][y+1]=1;
ans+=dfs(x,y+1,road,3);
}
else{
if(co[x][y+1]!=col&&l[x][y+1]<=lv){
ans+=1;
}
}
}
if(x+1<=n&&b[x][y]!=0&&c[x+1][y]==0&&(road==3||(road==2&&way==4))){
if(co[x+1][y]==0){
c[x+1][y]=1;
ans+=dfs(x+1,y,road,4);
}
else{
if(co[x+1][y]!=col&&l[x+1][y]<=lv){
ans+=1;
}
}
}
return ans;
}
int main(){
scanf("%d",&T);
while(T--){
scanf("%d%d%d",&n,&m,&q);
for(int i=1;i<=n;i++){
for(int j=1;j<m;j++){
a[i][j]=getchar();
}
}
for(int i=1;i<n;i++){
for(int j=1;j<=m;j++){
b[i][j]=getchar();
}
}
for(int i=1;i<=q;i++){
int x,y;
scanf("%d%d%d%d",&col,&lv,&x,&y);
int cnt=0;
if(x-1>0&&b[x-1][y]!='0')c[x-1][y]=1,cnt+=dfs(x-1,y,b[x-1][y],1),c[x-1][y]=0;
if(y-1>0&&a[x][y-1]!='0')c[x][y-1]=1,cnt+=dfs(x,y-1,a[x][y-1],2),c[x][y-1]=0;
if(y+1<=m&&a[x][y]!='0')c[x][y+1]=1,cnt+=dfs(x,y+1,a[x][y],3),c[x][y+1]=0;
if(x+1<=n&&b[x][y]!='0')c[x+1][y]=1,cnt+=dfs(x+1,y,b[x][y],4),c[x+1][y]=0;
cout<<cnt<<endl;
c[x][y]=col+1;
l[x][y]=lv;
}
}
return 0;
}