第二个点TLE求助

P1434 [SHOI2002] 滑雪

xiezihan @ 2020-07-18 11:50:26

#include<bits/stdc++.h>
using namespace std;
int a[1000][1000],vis[1000][1000];
int n,m;
int dfs(int x,int y)
{
    if(vis[x][y]==1)
    {
        return vis[x][y];
    }
    int s=1;
    vis[x][y]=1;
    int dx[4]={0,0,1,-1};
    int dy[4]={1,-1,0,0};
    for(int i=0;i<4;i++)
    {
        int tx,ty;
        tx=x+dx[i];
        ty=y+dy[i];
        if(tx>0&&ty>0&&tx<=n&&ty<=m&&a[tx][ty]<a[x][y])
        {
            dfs(tx,ty);
        vis[x][y]=max(vis[x][y],vis[tx][ty]+1);
        }
    }
    return vis[x][y];
}
int main()
{
    int t;
    string name;
        for(int j=1;j<=n;j++)
        {
            for(int k=1;k<=m;k++)
            {
                cin>>a[j][k];
            }
        }
        int ans=0;
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                ans=max(ans,dfs(i,j));
            }
        }
        cout<<ans<<endl; 
    return 0;
}

同样的做法在UVA10285A了


by lion0514 @ 2020-07-18 12:13:45

@xiezihan dfs时要判断有没有算过


by lion0514 @ 2020-07-18 12:14:42

我记得rmj的题的时间限制和空间限制一向比主题库的大


by cyfff @ 2020-07-18 13:15:39

不T才怪


by 海陵中学罗昊 @ 2020-08-11 19:27:42

我判断了,省了90%的时间 但还是错的


|