提交时间:2022-06-01 20:45:49

运行 ID: 1266

#include <bits/stdc++.h> using namespace std; const int dx[4]={0,0,-1,1},dy[4]={-1,1,0,0}; char c[201][201]; bool vis[201][201]; struct point{ int step,x,y,c; }s,e; queue<point> r; int main(){ int m,n,t; cin>>m>>n>>t; for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ cin>>c[i][j]; if(c[i][j]=='+'){ e.x=i;e.y=j;e.c=t;e.step=0; }else if(c[i][j]=='@'){ s.x=i;s.y=j;s.c=t;s.step=0; } } } r.push(s); while(!r.empty()){ if(r.front().x==e.x&&r.front().y==e.y){ cout<<r.front().step; return 0; } for(int i=0;i<4;i++){ point p; p.x=r.front().x+dx[i];p.y=r.front().y+dy[i]; if(p.x>=0&&p.y>=0&&p.x<m&&p.y<n){ if(vis[p.x][p.y]){ }else{ vis[p.x][p.y]=true; if(c[p.x][p.y]=='#'){ p.step=r.front().step+1; p.c=r.front().c-1; r.push(p); }else{ p.step=r.front().step+1; p.c=r.front().c; r.push(p); } } } } } cout<<"-1"; return 0; }