#include<bits/stdc++.h>using i64 = longlong;
constexprint dx[] = {0, 0, -1, 1};
constexprint dy[] = {-1, 1, 0, 0};
intmain(){
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int n, m, xs, ys, q;
std::cin >> n >> m >> xs >> ys >> q;
std::vector<std::string> s(n);
for (int i = 0; i < n; i++) {
std::cin >> s[i];
}
std::vector dis(n * m, -1);
std::queue<std::pair<int, int>> que;
que.emplace(xs, ys);
dis[xs * m + ys] = 0;
while (!que.empty()) {
auto [x, y] = que.front();
que.pop();
for (int k = 0; k < 4; k++) {
int nx = x + dx[k];
int ny = y + dy[k];
if (s[nx][ny] != '#' && dis[nx * m + ny] == -1) {
dis[nx * m + ny] = dis[x * m + y] + 1;
que.emplace(nx, ny);
}
}
}
constint l = 20;
std::vector nxt(l, std::vector(n * m, -1));
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (s[i][j] != '#') {
int nx, ny;
if (s[i][j] == '.') {
nx = i, ny = j;
} else {
int k = std::string("LRUD").find(s[i][j]);
nx = i + dx[k];
ny = j + dy[k];
if (s[nx][ny] == '#') {
nx = i, ny = j;
}
}
nxt[0][i * m + j] = nx * m + ny;
}
}
}
for (int t = 1; t < l; t++) {
for (int i = 0; i < n * m; i++) {
if (nxt[t - 1][i] != -1) {
nxt[t][i] = nxt[t - 1][nxt[t - 1][i]];
}
}
}
while (q--) {
int x, y;
std::cin >> x >> y;
int u = x * m + y;
if (dis[u] == -1) {
std::cout << -1 << "\n";
} else {
int ans = 0;
for (int t = 19; t >= 0; t--) {
int v = nxt[t][u];
if (dis[v] > ans + (1 << t)) {
ans += (1 << t);
u = v;
}
}
ans++;
std::cout << ans << "\n";
}
}
return0;
}
/*jiangly的代码*//*妙啊妙啊*/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具