84WA求调
查看原帖
84WA求调
858116
jiangzhirui楼主2024/10/23 09:09
#include <bits/stdc++.h>
using namespace std;
int n,m;
char a[305][305];
struct str{
	int xa[3],ya[3],l;
	int flagg;
} c[30];
struct st{
	int x,y,bu;
	int flag;
};
queue<st>q;
int fun(){
	while(!q.empty()){
		st b=q.front();
		q.pop();
		if(b.x<0||b.x>=n||b.y<0||b.y>=m||a[b.x][b.y]=='#')continue;
		if(a[b.x][b.y]=='='){
			return b.bu;
		}
		
		if(a[b.x][b.y]>='A'&&a[b.x][b.y]<='Z'&&b.flag==0){
			if(c[a[b.x][b.y]-'A'].xa[0]==b.x&&c[a[b.x][b.y]-'A'].ya[0]==b.y){
				q.push({c[a[b.x][b.y]-'A'].xa[1],c[a[b.x][b.y]-'A'].ya[1],b.bu,1});
			}else{
				q.push({c[a[b.x][b.y]-'A'].xa[0],c[a[b.x][b.y]-'A'].ya[0],b.bu,1});
			}
		}else{
			q.push({b.x+1,b.y,b.bu+1,0});
			q.push({b.x-1,b.y,b.bu+1,0});
			q.push({b.x,b.y+1,b.bu+1,0});
			q.push({b.x,b.y-1,b.bu+1,0});
		}
		if(a[b.x][b.y]>='A'&&a[b.x][b.y]<='Z'){}
		else{
			a[b.x][b.y]='#';
		}
		
	}
}
int main(){
	cin>>n>>m;
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			cin>>a[i][j];
			if(a[i][j]=='@'){
				q.push({i,j,0,0});
			}
			if(a[i][j]>='A'&&a[i][j]<='Z'){
				c[a[i][j]-'A'].xa[c[a[i][j]-'A'].l]=i;
				c[a[i][j]-'A'].ya[c[a[i][j]-'A'].l]=j;
				c[a[i][j]-'A'].flagg=1;
				c[a[i][j]-'A'].l++;
			}
		}
	}
	cout<<fun();
	return 0;
}
2024/10/23 09:09
加载中...