求救!最后一个点!

P1434 [SHOI2002] 滑雪

丨Sky灬丨无惧 @ 2020-01-17 16:34:32

#include<bits/stdc++.h>
using namespace std;
int n,m,rtt[1000][1000],ftt[1000][1000],ans=1,zx[4]= {0,0,1,-1},zy[4]= {1,-1,0,0},jx,jy;
void ctt(int x,int y) {
    //cout<<x<<" "<<y<<endl;
    if(ftt[x][y]!=0) {
        ftt[jx][jy]=max(ftt[jx][jy],ftt[x][y]);
        return;
    }
    ftt[x][y]=1;
    for(int i=0; i<4; i++) {
        int x2=x+zx[i];
        int y2=y+zy[i];
        if(x2>0&&y2>0&&x2<=n&&y2<=m&&rtt[x][y]>rtt[x2][y2]) {
            jx=x;
            jy=y;
            ctt(x2,y2);
            ftt[x][y]=max(ftt[x][y],ftt[x2][y2]+1);
        }
    }
}
int main() {
    cin>>n>>m;
    for(int i=1; i<=n; i++) {
        for(int j=1; j<=m; j++) {
            cin>>rtt[i][j];
        }
    }
    for(int i=1; i<=n; i++) {
        for(int j=1; j<=m; j++) {
            ctt(i,j);
        }
    }
    for(int i=1; i<=n; i++) {
        for(int j=1; j<=m; j++) {
            ans=max(ans,ftt[i][j]);
        }
    }
    cout<<ans;
    return 0;
}

|