记录编号 |
547764 |
评测结果 |
A |
题目名称 |
梦那边的美好 |
最终得分 |
100 |
用户昵称 |
夜莺 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.000 s |
提交时间 |
2019-12-13 20:36:01 |
内存使用 |
3.20 MiB |
显示代码纯文本
#include<cstdio>
#include<iostream>
using namespace std;
int T,n,m,f[101][101],ii[4]={0,1,0,-1},jj[4]={-1,0,1,0};
int i1,j1,i2,j2;
char a[101][101];
void dfs(int i,int j,int ans){
if(a[i][j]=='*'){
if(ans<f[i2][j2])
f[i2][j2]=ans;
return;
}
for(int k=0;k<=3;k++){
i+=ii[k];
j+=jj[k];
if(i<=n&&i>=1&&j<=m&&j>=1&&(a[i][j]=='.'||a[i][j]=='*')){
if(ans<f[i][j]){
f[i][j]=ans;
dfs(i,j,ans+1);
}
}
i-=ii[k];
j-=jj[k];
}
return;
}
int main(){
freopen("ESDT.in","r",stdin);
freopen("ESDT.out","w",stdout);
cin>>T;
for(int i=1;i<=T;i++){
cin>>n>>m;
swap(n,m);
for(int j=1;j<=n;j++)
for(int k=1;k<=m;k++){
cin>>a[j][k];
f[j][k]=999999;
if(a[j][k]=='@'){
i1=j;
j1=k;
}
if(a[j][k]=='*'){
i2=j;
j2=k;
}
}
dfs(i1,j1,1);
if(f[i2][j2]==999999)
cout<<"Oh~ That's good~\n";
else cout<<f[i2][j2]<<"\n";
}
}