蒟蒻求救
  • 板块题目总版
  • 楼主zhuoheng
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/4/2 21:41
  • 上次更新2024/4/3 12:50:39
查看原帖
蒟蒻求救
1023698
zhuoheng楼主2024/4/2 21:41

P1683 求调

# include <bits/stdc++.h>
using namespace std;
char m[21][21];
struct Now{
	int step,x,y;
}; 
int mx,h,w,sx,sy,maxx,maxy;
bool vis[21][21];
queue<Now>q;
void bfs(int bx,int by){
	Now tmp;
	tmp.x=bx,tmp.y=by,tmp.step=1;
	vis[bx][by]=1;
	q.push(tmp);
	while(!q.empty()){
		tmp=q.front();
		q.pop();
		int nx=tmp.x,ny=tmp.y;
		if(!vis[nx+1][ny]&&nx<=h&&m[nx+1][ny]!='#')q.push((Now){tmp.step+1,nx+1,ny}),vis[nx+1][ny]=1;
		if(!vis[nx-1][ny]&&nx>0&&m[nx-1][ny]!='#')q.push((Now){tmp.step+1,nx-1,ny}),vis[nx-1][ny]=1;
		if(!vis[nx][ny+1]&&ny<=w&&m[nx][ny+1]!='#')q.push((Now){tmp.step+1,nx,ny+1}),vis[nx][ny+1]=1;
		if(!vis[nx][ny-1]&&ny>0&&m[nx][ny-1]!='#')q.push((Now){tmp.step+1,nx,ny-1}),vis[nx][ny-1]=1;
		mx=max(mx,tmp.step);
	}
}
int main(){
	cin>>w>>h;
	for(int i=1;i<=h;i++)
		for(int j=1;j<=w;j++){
			cin>>m[i][j];
			if(m[i][j]=='@')sx=i,sy=j;
		}
	bfs(sx,sy);
	cout<<mx;
}
2024/4/2 21:41
加载中...