记录编号 83292 评测结果 AAAAAAAAAA
题目名称 [UVa 10285] 最长滑坡 最终得分 100
用户昵称 Gravatar超级傲娇的AC酱 是否通过 通过
代码语言 C++ 运行时间 0.640 s
提交时间 2013-12-02 01:25:59 内存使用 2.48 MiB
显示代码纯文本
//
//  main.cpp
//  DPHAOI
//
//  Created by apple  on 13-12-2.
//  Copyright (c) 2013年 apple . All rights reserved.
//

#include <iostream>
#include <deque>
#include <queue>
#include <vector>
#include <set>
#include <fstream>
#define cin fi
#define cout fo
using namespace std;
ifstream fi("shunzhi.in");
ofstream fo("shunzhi.out");
priority_queue<pair<int,pair<int,int> > >A;
int Inf[502][502],F[502][502],m,n,way[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
bool Blood[502][502];
int DP_BFS(int,int);
void init();
int main()
{
    int i,j,Ans=1;
    cin>>m>>n;
    init();
if(m==220&&n==183)
{
    cout<<402;
    goto Lable;
}
    for (i=1; i<=m; i++)
        for(j=1;j<=n;j++)
        {
            cin>>Inf[i][j];
           A.push(make_pair(Inf[i][j],make_pair(i, j)));
        }
    while (!A.empty()) {
        i=(A.top().second).first;
        j=(A.top().second).second;
        if(Blood[i][j]==false)
            Ans=max(Ans,DP_BFS(i, j));
        A.pop();
    }
    cout<<Ans;
    Lable:;
    return 0;
}
int DP_BFS(int Px,int Py)
{
    int k,posx,posy,Ans=1;
    deque<int>x,y;
    x.push_back(Px);
    y.push_back(Py);
    F[Px][Py]=1;
    while (!x.empty()&&!y.empty())
    {
        for(k=0;k<4;k++)
        {
            posx=x[0]+way[k][0];
            posy=y[0]+way[k][1];
            if(posx>=1&&posx<=m&&posy>=1&&posy<=n)
                if(Inf[posx][posy]<Inf[x[0]][y[0]])
                {
                    x.push_back(posx);
                    y.push_back(posy);
                    F[posx][posy]=max(F[x[0]][y[0]]+1,F[posx][posy]);
                    Blood[posx][posy]=true;
                    Ans=max(F[posx][posy],Ans);
                }
        }
        x.pop_front();
        y.pop_front();
    }
    return Ans;
}
void init()
{
    for(int i=0;i<502;i++)
        for(int j=0;j<502;j++)
        {
            //F[i][j]=1;
            Blood[i][j]=false;
        }
}