这题tm的不能下载数据:
#include<bits/stdc++.h>
using namespace std;
int n,m,u,w=0,que[250005][3],mx,my,dt=1;
char xb[505][505],d[18];
bool f[505][505];
int ex[4]={0,0,-1,1};
int ey[4]={-1,1,0,0};
void bfs(){
que[1][0]=mx;
que[1][1]=my;
int head=0,tail=1;
while(head<tail){
head++;
for(int i=0;i<4;i++){
int xt=que[head][0]+ex[i];
int yt=que[head][1]+ey[i];
if((xt>=1&&xt<=n&&yt>=1&&yt<=m)&&(!f[xt][yt])&&(xb[xt][yt]!='*')){
if(int(xb[xt][yt])>65&&int(xb[xt][yt])<=90){
w+=que[head][2]+1;
d[dt]=xb[xt][yt];
xb[xt][yt]='*';
mx=xt;
my=yt;
head=tail;
break;
}
f[xt][yt]=1;
que[++tail][0]=xt;
que[tail][1]=yt;
que[tail][2]=que[head][2]+1;
}
}
}
}
int main(){
cin>>n>>m>>u;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>xb[i][j];
if(xb[i][j]=='A'){
xb[i][j]='*';
mx=i;
my=j;
}
}
}
d[dt]='A';
for(int i=1;i<u;i++){
dt++;
bfs();
memset(f+1,0,sizeof(f));
}
cout<<w<<endl;
for(int i=1;i<=u;i++){
cout<<d[i];
}
return 0;
}