提交时间:2022-05-28 11:57:08

运行 ID: 1148

#include <iostream> using namespace std; char a[201][201]; int xk[4]={1,-1,0,0},yk[4]={0,0,1,-1}; struct point{ int t,s; }b[201][201]; int m,n; void bfs(int k){ for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ if(b[i][j].s==k{ for(int i=0;i<4;i++){ if(b[i+xk[i]][j+xy[i]].s){ if(b[i+xk[i]][j+xy[i]].s==k+1){ b[i+xk[i]][j+xy[i]].t=max(b[i+xk[i]][j+xy[i]].t,b[i+xk[i]][j+xy[i]].t-1) }else{ b[i+xk[i]][j+xy[i]].s=k+1; b[i+xk[i]][j+xy[i]].t=b[i+xk[i]][j+xy[i]].t-1; } }else{ b[i+xk[i]][j+xy[i]].s=k+1; b[i+xk[i]][j+xy[i]].t=b[i+xk[i]][j+xy[i]].t-1; }else{ if(b[i+xk[i]][j+xy[i]].s){ if(b[i+xk[i]][j+xy[i]].s==k+1) b[i+xk[i]][j+xy[i]].t=max(b[i+xk[i]][j+xy[i]].t,b[i+xk[i]][j+xy[i]].t) else b[i+xk[i]][j+xy[i]].s=k+1; }else b[i+xk[i]][j+xy[i]].s=k+1; } } } } } } int main(){ int t,zx,zy; cin>>m>>n>>t; for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ cin>>a[i][j]; if(a[i][j]=='+'){ zx=i;zy=j; b[i][j].s=-1; }else if(a[i][j]=='@'){ b[i][j].t=t; b[i][j].s=0; }else{ b[i][j].s=-1; } } } for(int i=1;;i++){ bfs(i-1); if(!b[zx][zy]){ cout<<i; return 0; } } return 0; }