洛谷P1434,这个代码为什么RE?

#include
using namespace std;
int n,m,a[105][105],f[105][105],mx,x,y,ans,d1[]={-1,0,0,1},d2[]={0,-1,1,0};
bool check(int a1,int b1,int a2,int b2){
    if(a[a1][b1]return false;
    if(a2>n||a2<1||b2>m||b2<1)return false;
    return true;
}
int dfs(int a,int b){
    if(f[a][b])return f[a][b];
    f[a][b]=1;
    for(int i=0;i<4;i++){
        int nx=x+d1[i],ny=y+d2[i];
        if(check(a,b,nx,ny)){
            dfs(nx,ny);
            f[a][b]=max(f[a][b],f[nx][ny]+1);
        }
    }
    return f[a][b];
}
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        for(int j=1;i<=m;j++){
            cin>>a[i][j];
        }
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            ans=max(ans,dfs(i,j));
        }
    }
    cout<

洛谷P1434,请问这个为什么RE?

13行, int nx=x+d1[i],ny=y+d2[i];这里的x,y从哪里来的值??