View Code of Problem 17

#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.


Back to problem 17