http://ybt.ssoier.cn:8088/problem_show.php?pid=1212
代码:
#include<bits/stdc++.h>
using namespace std;
int fx[4] = {0, 1, 0, -1};
int fy[4] = {-1, 0, 1, 0};
int R, S, ans;
char a[200][200];
bool f[50000];
int dfs(int x, int y, int z)
{
ans = max(ans, z);
for(int i = 0; i < 4; i ++)
{
int xx = x + fx[i];
int yy = y + fy[i];
if(xx <= R && xx > 0 && yy <= S && yy > 0 && !f[a[xx][yy]])
{
f[a[xx][yy]] = true;
dfs(xx, yy, z + 1);
f[a[xx][yy]] = false;
}
}
}
int main()
{
//freopen(".in", "r", stdin);
//freopen(".out", "w", stdout);
cin >> R >> S;
for(int i = 1; i <= R; i ++)
for(int j = 1; j <= S; j ++)
cin >> a[i][j];
f[a[1][1]] = true;
dfs(1, 1, 1);
cout << ans;
return 0;
}