RT
#include<bits/stdc++.h>
using namespace std;
char a[310][310];
int sum=114514;
int xx,yy;
int n,m;
void dfs(int x,int y,int ans,int flag){
if(x>m||x<1||y<1||y>n||a[x][y]=='#')
return;
else if(a[x][y]=='='){
sum=min(sum,ans);
return;
}
else if(a[x][y]=='.'||flag==1||a[x][y]=='@'){
dfs(x+1,y,ans+1,0);
dfs(x,y+1,ans+1,0);
dfs(x-1,y,ans+1,0);
dfs(x,y-1,ans+1,0);
}
else{
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(i!=x&&j!=y&&a[i][j]==a[x][y]){
dfs(i,j,ans,1);
}
}
}
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
if(a[i][j]=='@'){
xx=i;
yy=j;
}
}
}
dfs(xx,yy,0,0);
cout<<sum<<endl;
return 0;
}
编译器吐出来的
我空间好像没有开小呀