求调
#include<bits/stdc++.h>
using namespace std;
bool v[1001][1001];
int a[1001][1001];
int ax[]={-1,1,0};
int ay[]={0,0,1};
int k[1001][1001];
int n,m;
int maxx=-0x3f3f3f3f;
void bfs(){
queue<int> x;
queue<int> y;
x.push(1);
y.push(1);
v[1][1]=1;
k[1][1]=a[1][1];
while(!x.empty()){
int ux=x.front(),uy=y.front();
x.pop();
y.pop();
for(int i=0;i<3;i++){
int sx=ux+ax[i];
int sy=uy+ay[i];
if(sy<1||sy>m||sx<1||sx>n){
continue;
}
if(v[sx][sy]){
continue;
}
if(k[sx][sy]<k[ux][uy]+a[sx][sy]){
k[sx][sy]=k[ux][uy]+a[sx][sy];
}else{
continue;
}
x.push(sx);
y.push(sy);
v[sx][sy]=1;
}
}
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
scanf("%d",&a[i][j]);
}
}
bfs();
cout<<k[n][m];
return 0;
}