#include #include using namespace std; int H,W; int A[800][800]; long D[800][800]; const int dx[8]={0,1,0,-1,1,1,-1,-1}; const int dy[8]={1,0,-1,0,1,-1,1,-1}; int main() { cin>>H>>W; H-=2; for(int i=0;i>A[i][j]; D[i][j]=9e18; } priority_queue > >Q; for(int i=0;i=H||ty>=W)continue; if(A[tx][ty]==-1)continue; long nc=c+A[tx][ty]; if(D[tx][ty]>nc) { D[tx][ty]=nc; Q.push(make_pair(-nc,make_pair(tx,ty))); } } } long ans=9e18; for(int i=0;i