社区讨论

0分 求条qwq

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

讨论操作

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

当前回复
0 条
当前快照
1 份
快照标识符
@mhjkuuv7
此快照首次捕获于
2025/11/04 04:13
4 个月前
此快照最后确认于
2025/11/04 04:13
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
#define int long long
struct st{
	int x , y , k ;
};
int mp[1005][1005][15] 	;
int n , k ;
char c[1005][1005] ;
int dx[] = { 0  , 1 , 0 , -1 } ;
int dy[] = { -1 , 0 , 1 ,  0 } ;
queue<st> que ;
signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);
	cin >> n >> k ;
	memset( mp , -1 , sizeof( mp ) ) ;
	for ( int i = 1 ; i <= n ; i++ ){
		for ( int j = 1 ; j <= n ; j++ ){
			cin >> c[i][j] ;
		}
	}
	que.push( { 1 , 1 , 0 } ) ;
	mp[1][1][0] = 0 ;
	while( !que.empty() ){
		st head = que.front() ;
		que.pop() ;
		int sp = mp[head.x][head.y][head.k] + 1 ;
		int wd = head.k ;
		if ( wd < 0 )	wd = 0 ;
		cout << head.x << " " << head.y << " " << head.k << " " << sp - 1 << endl ;
		for ( int kk = 0 ; kk <= 3 ; kk++ ){
			int xx = head.x + dx[kk] ;
			int yy = head.y + dy[kk] ;
			if ( xx < 1 || xx > n || yy < 1 || yy > n )	continue ;
			if ( xx == n && yy == n ){
				cout << sp ;
				return 0 ;
			}
			if ( c[xx][yy] == '#' )	continue ;
			if ( c[xx][yy] == 'X' && wd == 0 )	continue ;
			wd-- ;
			if ( wd < 0 )	wd = 0 ;
			if ( c[xx][yy] == '%' ){
				wd = k ;
				c[xx][yy] = '.' ;
			}	
			if ( mp[xx][yy][wd] != -1 )	continue ;
			que.push( { xx , yy , wd } ) ;
			mp[xx][yy][wd] = sp ;
		}
	}
	cout << -1 ;
	return 0 ;
}

回复

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

正在加载回复...