问(宽搜)

灌水区

@[yangkaixiang](/user/1349163) 送你个模板 ``` #include<bits/stdc++.h> using namespace std; int main(){ int n,m; cin>>n>>m; int sx=0,sy=0,tx=0,ty=0; int vis[510][510]={0}; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ char a; cin>>a; if(a=='#')vis[i][j]=1; if(a=='T')tx=i,ty=j; if(a=='S')sx=i,sy=j; } } int d[510][510]={0}; queue<int>q1,q2; q1.push(sx); vis[sx][sy]=1; q2.push(sy); int dl[4][2]={0,1,1,0,0,-1,-1,0}; while(!q1.empty()){ int x=q1.front(); q1.pop(); int y=q2.front(); q2.pop(); if(x==tx&&y==ty){ cout<<d[x][y]; return 0; } for(int i=0;i<4;i++){ int xx=x+dl[i][0]; int yy=y+dl[i][1]; if(xx>=0&&xx<n&&yy>=0&&yy<m){ if(!vis[xx][yy]){ q1.push(xx); q2.push(yy); d[xx][yy]=d[x][y]+1; vis[xx][yy]=1; } } } } cout<<-1; return 0; } ```
by 1217Eirc @ 2024-09-20 13:06:53


@[1217Eirc](/user/687268) 谢谢
by ykx1 @ 2024-09-20 13:07:37


|