#include <bits/stdc++.h>
#define pi 3.141592653589793238462
#define mod 1000000007
#define ll long long
#define ld long double
#define vi vector<int>
#define vll vector<ll>
#define all(v) v.begin(), v.end()
#define acc(v) accumulate(all(v), 0)
#define pb push_back
#define isort(v) sort(all(v))
#define dsort(v) sort(v.rbegin(), v.rend())
#define in(v) for(auto &i : v) cin >> i
#define out(v) for(auto &i : v) cout << i << ' '
using namespace std;
char grid[51][51];
bool visited[51][51];
int max_length = 0, cnt = 1;
vector<pair<int, int>> directions = {
{0, 1}, {0, -1}, {1, 0}, {-1, 0}, {1, 1}, {-1, -1}, {1, -1}, {-1, 1}
};
bool is_valid(int i, int j, int n, int m){
return i >= 0 && j >= 0 && i < n && j < m;
}
void reset(){
for(int i = 0; i < 51; i++){
for(int j = 0; j < 51; j++) visited[i][j] = false;
}
cnt = 1;
}
void dfs(int i, int j, int n, int m){
visited[i][j] = true;
for(auto &dir : directions){
int child_x = i + dir.first, child_y = j + dir.second;
if(!is_valid(child_x, child_y, n, m)) continue;
if(visited[child_x][child_y]) continue;
if(grid[child_x][child_y] == grid[i][j] + 1){
cnt++;
dfs(child_x, child_y, n, m);
}
}
max_length = max(max_length, cnt);
cnt = 1;
}
int main(){
ios_base::sync_with_stdio(false); cin.tie(0);
int tc = 1;
while(true){
reset();
max_length = 0;
int n, m;
cin >> n >> m;
if(!(n + m)) break;
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
cin >> grid[i][j];
}
}
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
if(grid[i][j] == 'A'){
reset();
dfs(i, j, n, m);
}
}
}
cout << "Case " << tc << ": " << max_length << "\n";
tc++;
}
return 0;
}
Why is this code giving wrong answer, anyone please enlighten.
created
last reply
- 1
reply
- 411
views
- 2
users