1 / 2
Mar 2023
#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

    Mar '23
  • last reply

    Mar '23
  • 1

    reply

  • 411

    views

  • 2

    users

Try this

5 5
AAABB
BBBBB
CDCDC
DDDDD
EEEEE

You code gives 4, but column 3 shows the answer should be 5.

EDIT:
Here’s a similar, but smaller example

3 3
DCX
XBA
CDE