52分求调
查看原帖
52分求调
725397
zhangchengyi356535楼主2023/2/6 21:27
#include <bits/stdc++.h>
using namespace std;
int n,m,vis[310][310];
char a[310][310];
struct nod{
	int x,y,t;
};
queue<nod>q;
int dx[4]={1,0,0,-1};
int dy[4]={0,1,-1,0};
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>a[i][j];
			if(a[i][j]=='@'){
				nod begin;
				begin.x=i;
				begin.y=j;
				begin.t=0;
				vis[i][j]=1;
				q.push(begin);
			}
		}
	}
	int flag=0;
	while(q.empty()==0){
		nod now=q.front();
		q.pop();
		for(int i=0;i<4;i++){
			nod nxt;
			nxt.x=now.x+dx[i];
			nxt.y=now.y+dy[i];
			nxt.t=now.t+1;
			if(nxt.x>=1&&nxt.x<=n&&nxt.y>=1&&nxt.y<=m&&vis[nxt.x][nxt.y]==0&&a[nxt.x][nxt.y]!='#'){
				vis[nxt.x][nxt.y]=1;
				if(a[nxt.x][nxt.y]=='='){
					cout<<nxt.t<<endl;
					return 0;
				}
				else if(a[nxt.x][nxt.y]>='A'&&a[nxt.x][nxt.y]<='Z'){
					for(int i=1;i<=n;i++){
						for(int j=1;j<=m;j++){
							if(a[i][j]==a[nxt.x][nxt.y]&&i!=nxt.x&&j!=nxt.y){
								nxt.x=i;
								nxt.y=j;
								q.push(nxt);
								flag=1;
								break;
							}
						}
						if(flag){
							break;
						}
					}
				}
				if(flag==0){
		    	    q.push(nxt);
			    }
			    flag=0;
			}
		}
	}
	return 0;
}
2023/2/6 21:27
加载中...