fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int r, c, visited[21][21], ret = 1, y, x, cnt[26];
  4. int dy[] = {-1, 0, 1, 0};
  5. int dx[] = {0, 1, 0, -1};
  6. char a[21][21];
  7. queue<pair<int, int>> q;
  8. int main(){
  9. cin >> r >> c;
  10. for(int i = 0; i < r; i++){
  11. for(int j = 0; j < c; j++){
  12. cin >> a[i][j];
  13. }
  14. }
  15. q.push({0, 0});
  16. visited[0][0] = 1;
  17. cnt[a[0][0] - 'a']++;
  18. while(q.size()){
  19. tie(y, x) = q.front();
  20. q.pop();
  21. for(int i = 0; i < 4; i++){
  22. int ny = dy[i] + y;
  23. int nx = dx[i] + x;
  24. if(ny < 0 || ny >= r || nx < 0 || nx >= c || visited[ny][nx] || cnt[a[ny][nx] - 'a']) continue;
  25. visited[ny][nx] = visited[y][x] + 1;
  26. ret = max(ret, visited[ny][nx]);
  27. cout << ny << ' ' << nx << '\n';
  28. q.push({ny, nx});
  29. }
  30. }
  31. cout << ret << '\n';
  32. }
Success #stdin #stdout 0.01s 5284KB
stdin
2 4
CAAB
ADCB
stdout
0 1
1 0
0 2
1 1
0 3
1 3
5