WA72pts求调
查看原帖
WA72pts求调
1181602
Cute_Furina楼主2024/11/24 17:06
#include<iostream>
#include<cstring>
#include<cstdio> 
#include<queue>
using namespace std;

#define forr(i,a,b) for(int i = (a);i <= (b);i ++)

struct node{
	int x;
	int y;
	int t;
};
int n,m;
char mp[305][305];
bool vis[305][305];
int dxy[4][2] = {{-1,0},{0,-1},{1,0},{0,1}};
queue<node> q;
int sx,sy,ex,ey;

void cc(int &x,int &y){
	forr(i,1,n){
		forr(j,1,m){
			if(mp[x][y] == mp[i][j] && (x != i || y != j)){
				x = i;
				y = j;
				return;
			}
		}
	}
	return;
}


int main(){
	
	cin >> n >> m;
	
	forr(i,1,n){
		scanf("%s",mp[i]);
	}
	forr(i,1,n){
		forr(j,1,m){
			if(mp[i][j] == '@'){
				sx = i;
				sy = j;
			}
		}
	}
	q.push((node){sx,sy,0});
	while(!q.empty()){
		node v = q.front();
		q.pop();
		int x = v.x;
		int y = v.y;
		int t = v.t;
		if(mp[x][y] == '='){
			cout << t << "\n";
			return 0;
		}
		if(mp[x][y] <= 'Z' && mp[x][y] >= 'A') cc(x,y);
		for(int i = 0;i < 4;i ++){
			int dx = x + dxy[i][0];
			int dy = y + dxy[i][1];
			if(dx >= 1 && dy >= 1 && dx <= n && dy <= m && mp[dx][dy] != '#' && !vis[dx][dy]){
				q.push((node){dx,dy,t + 1});
				vis[dx][dy] = 1;
			}
		}
	}
	return 0;
}

麻烦不要一上来就贴代码好吗,蒟蒻只想知道自己的程序哪里错了qwq

2024/11/24 17:06
加载中...