Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //UVa Q10285
- #include <bits/stdc++.h>
- using namespace std;
- int n,m;
- int arr[100][100];
- bool vis[100][100];
- int stp[100][100];
- int dx[] = {0,1,0,-1};
- int dy[] = {1,0,-1,0};
- int ans;
- int dfs(int x, int y){
- if(stp[x][y] != 0)return stp[x][y];
- int ret = 0;
- vis[x][y] = 1;
- for(int i = 0; i < 4; ++i){
- int nx = x+dx[i], ny = y+dy[i];
- if(0 <= nx && nx < n && 0 <= ny && ny < m && !vis[nx][ny] && arr[x][y] > arr[nx][ny]){
- ret = max(ret, dfs(nx, ny));
- }
- }
- vis[x][y] = 0;
- stp[x][y] = ret+1;
- return stp[x][y];
- }
- int32_t main(){
- string s;
- int t;
- cin >> t;
- while(t--){
- memset(stp, 0, sizeof(stp));
- cin >> s >> n >> m;
- ans = 0;
- for(int i = 0; i < n; ++i){
- for(int j = 0; j < m; ++j){
- cin >> arr[i][j];
- }
- }
- for(int i = 0; i < n; ++i){
- for(int j = 0; j < m; ++j){
- ans = max(ans, dfs(i,j));
- }
- }
- cout << s << ": " << ans << '\n';
- }
- return 0 ;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement