Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int n, m;
- char grid[21][21];
- bool visited[27];
- int dx[] = {-1, 1, 0, 0};
- int dy[] = {0, 0, 1, -1};
- int ans;
- void dfs(int x, int y, int counter){
- if(visited[grid[x][y]-'A'] || x<0 || x>=n || y<0 || y>=m){
- return;
- }
- //visited[x][y] = true;
- //counter++;
- visited[grid[x][y]-'A'] = true;
- ans = max(ans, counter);
- for(int i=0; i<4; i++){
- int nx = x+dx[i];
- int ny = y+dy[i];
- if(!visited[grid[nx][ny]-'A'] && nx>=0 && nx<n && ny>=0 && ny<m){
- counter++;
- //cout << "nx: " << nx << ", ny: " << ny << ", grid[nx][ny]: " << grid[nx][ny] << ", counter: " << counter << '\n';
- //visited[grid[x][y]-'A'] = true;a
- dfs(nx, ny, counter);
- counter--;
- //visited[grid[x][y]-'A'] = false;
- }
- }
- //counter--;
- visited[grid[x][y]-'A'] = false;
- }
- int main(){
- //freopen("letters.in", "r", stdin);
- cin >> n >> m;
- string s;
- for(int i=0; i<n; i++){
- cin >> s;
- for(int j=0; j<m; j++){
- grid[i][j] = s[j];
- }
- }
- //for(int i=0; i<n; i++){
- //for(int j=0; j<m; j++){
- //cout << "i: " << i << ", j: "<< j << ", grid[i][j]: " << grid[i][j] << '\n';
- //memset(visited, false, sizeof(visited));
- //dfs(i, j, 1);
- //}
- //}
- dfs(0, 0, 1);
- cout << ans << '\n';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement