社区讨论
中国题UKE???
P10234[yLCPC2024] B. 找机厅参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @m5uupcua
- 此快照首次捕获于
- 2025/01/13 17:37 去年
- 此快照最后确认于
- 2025/01/13 21:43 去年
P10234 [yLCPC2024] B. 找机厅
疯了
CPP#include <bits/stdc++.h>
using namespace std;
int aaaaaa[1000][1000], n, m, t;
int xxx[4][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
int bbb[1000][1000];
struct weiyi {
int x, y;
};
queue<weiyi>q;
void bfs() {
while (!q.empty()) {
int ux = q.front().x, uy = q.front().y;
q.pop();
for (int i = 0; i < 4; i++) {
int d = bbb[ux][uy];
int vx = ux + xxx[i][0], vy = uy + xxx[i][1];
if (!vx || !vy || vx > n || vy > m || bbb[vx][vy] >= 0 || aaaaaa[ux][uy] == aaaaaa[vx][vy]) {
} else {
bbb[vx][vy] = d + 1;
q.push({vx, vy});
}
}
}
}
void dfs(int x, int y) {
if (x == 1 && y == 1) {
return ;
} else if (bbb[x][y] == -1) {
return ;
} else {
if (bbb[x - 1][y] == bbb[x][y] - 1) {
dfs(x - 1, y);
cout << 'U';
} else if (bbb[x][y - 1] == bbb[x][y] - 1) {
dfs(x, y - 1);
cout << 'R';
} else if (bbb[x + 1][y] == bbb[x][y] + 1) {
dfs(x + 1, y);
cout << 'D';
} else if (bbb[x][y + 1] == bbb[x][y] + 1) {
dfs(x, y + 1);
cout << "L";
}
}
}
int main() {
cin >> t;
while (t--) {
memset(bbb, -1, sizeof(bbb));
cin >> n >> m;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
char c;
cin >> c;
aaaaaa[i][j] = c == '1';
}
}
q.push({1, 1});
bbb[1][1] = 0;
bfs();
cout << bbb[n][m] << '\n';
if (bbb[n][m] != -1) {
dfs(n, m);
}
}
return 0;
}
/*5
5
01011
10100
11010
01001
10110
*/
回复
共 0 条回复,欢迎继续交流。
正在加载回复...