社区讨论

1WA,5MLE求调

P8673[蓝桥杯 2018 国 C] 迷宫与陷阱参与者 1已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@mhjsroqz
此快照首次捕获于
2025/11/04 07:54
4 个月前
此快照最后确认于
2025/11/04 07:54
4 个月前
查看原帖
Code
CPP
#include<bits/stdc++.h>
using namespace std;
struct node {
	int x,y,step,k;
};
int n,k;
int dx[4]= {1,-1,0,0},dy[4]= {0,0,1,-1};
char vis[1005][1005];
char mp[1005][1005];
node no=node{
	0,0,0,0
};
queue<node>q;
int main() {
	cin>>n>>k;
	for(int i=0; i<n; i++) {
		for(int j=0; j<n; j++) {
			cin>>mp[i][j];
		}
	}

	q.push(no);
	while(!q.empty()) {
		no=q.front();
		if(no.x==n-1 &&no.y==n-1) {
			cout<<no.step;
			return 0;
		}
		q.pop();
		for(int i=0; i<4; i++) {
			int nx=no.x+dx[i],ny=no.y+dy[i];
			node ne;
			ne.x=nx,ne.y=ny,ne.step=no.step+1;
			if(no.k)ne.k=no.k-1;
			if(mp[nx][ny]=='%') {
				ne.k=k;
			}
			if(nx>=0&&ny>=0&&nx<n&&ny<n&&mp[nx][ny]!='#' && (mp[nx][ny]!='X'||no.k) &&(!vis[nx][ny ]||vis[nx][ny]<ne.k)) {
				vis[nx][ny]=ne.k;
				q.push(ne);
			}
		}
	}
	cout<<-1;
	return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...