ybt1251仙岛求药,没有多测版re了,帮帮忙quq
  • 板块题目总版
  • 楼主Nostopathy
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/4/30 19:53
  • 上次更新2024/4/30 21:42:41
查看原帖
ybt1251仙岛求药,没有多测版re了,帮帮忙quq
1286053
Nostopathy楼主2024/4/30 19:53
#include<bits/stdc++.h>

using namespace std;

struct node{
	
	int x,y,step;
	
};

int m,n,sx,sy,ex,ey,f,r;

char a[33][33];

int dit[4][2]={{-1,0},{1,0},{0,-1},{0,1}};

node q[10003];

void bfs(){
	
	int ans=-1;
	
	f=r=1,q[r].x=sx,q[r].y=sy,q[r].step=0,a[sx][sy]='#';
	
	while(f<=r){
		
		int fx=q[f].x,fy=q[f].y,fstep=q[f].step;
		
		if(fx==ex&&fy==ey){
			
			ans=fstep;
			
			break;
			
		}
		
		for(int i=0;i<4;++i){
			
			int nx=fx+dit[i][0],ny=fy+dit[i][1];
			
			if(nx>=0&&nx<m&&ny>=0&&ny<n&&(a[nx][ny]=='.'||a[nx][ny]=='*')){
				
				a[nx][ny]=='#',r++,q[r].x=nx,q[r].y=ny,q[r].step=fstep+1;
								
			}
			
		}
		
		f++;
		
	}
	
	cout<<ans<<'\n';
	
}

int main(){
	
	cin>>m>>n;
	
	for(int i=0;i<m;++i)cin>>a[i];
	
	for(int i=0;i<m;++i)for(int j=0;j<n;++j){
		
		if(a[i][j]=='@')sx=i,sy=j;
		
		if(a[i][j]=='*')ex=i,ey=j;
		
	}
	
	bfs();
	
}

quq

RE67pts

2024/4/30 19:53
加载中...