#include<iostream> #include<cstring> #include<vector> using namespace std; void dfs(vector<vector<int>> a,int i,int j,int& cnt) { int q = a.size(), w = a[0].size(); cnt ++; if(i-1>=0 && a[i-1][j] > a[i][j]) dfs(a,i-1,j,cnt); if(i+1<q && a[i+1][j] > a[i][j]) dfs(a,i+1,j,cnt); if(j-1>=0 && a[i][j-1] > a[i][j]) dfs(a,i,j-1,cnt); if(j+1<w && a[i][j+1] > a[i][j]) dfs(a,i,j+1,cnt); } void refresh(vector<vector<char>>& flag) { int q = flag.size(), w = flag[0].size(); for(int i = 0;i < q;i ++) { for(int j = 0;j < w;j ++) { flag[i][j] = false; } } } int main() { int n, m; while(cin >> n >> m) { vector<vector<int>> a(n,vector<int>(m)); //vector<vector<char>> flag(n,vector<char>(m)); for(int i = 0;i < n;i ++) { for(int j = 0;j < m;j ++) { cin >> a[i][j]; } } int cnt = 0, res = 0; for(int i = 0;i < n;i ++) { for(int j = 0;j < m;j ++) { dfs(a,i,j,cnt); res = max(cnt-1,res); cnt = 0; //refresh(flag); } } cout << res << endl; } return 0; } |
Double click to view unformatted code.