#include<bits/stdc++.h>
using namespace std;
int n,m,a[1000][1000];
long long vis[1000][1000];
bool another_vis[1000][1000];
int dx[3]={1,-1,0};
int dy[3]={0,0,1};
void dfs(int x,int y,long long num){
if(num<vis[x][y]) return ;
else vis[x][y]=num;
if(x==n-1&&y==m-1) {
return ;
}
for(int i=0;i<3;i++){
int nx=x+dx[i];
int ny=y+dy[i];
if(nx>=0&&nx<n&&ny>=0&&ny<m&&another_vis[nx][ny]==0){
another_vis[nx][ny]=1;
dfs(nx,ny,num+a[nx][ny]);
another_vis[nx][ny]=0;
}
}
}
int main(){
cin>>n>>m;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>a[i][j];
vis[i][j]=-10000000000;
}
}
dfs(0,0,a[0][0]);
cout<<vis[n-1][m-1];
return 0;
}
样例都过不了,为什么?