社区讨论

站外题悬棺求调

灌水区参与者 2已保存回复 1

讨论操作

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

当前回复
1 条
当前快照
1 份
快照标识符
@m43y4y3j
此快照首次捕获于
2024/11/30 17:04
去年
此快照最后确认于
2025/11/04 13:35
4 个月前
查看原帖

题面

代码

CPP
#include <bits/stdc++.h>
using namespace std;
struct nde {
    int x, y, t;
} s, t;
int n, m, d[505][505];
char a[505][505];
queue<nde> q;
void bfs() {
    memset(d, 0x3f3f3f, sizeof d);
    q.push(s);
    while (!q.empty()) {
        s = q.front();
        q.pop();
        if (s.x == t.x && s.y == t.y) {
            cout << s.t << endl;
            return;
        }
        if (s.t <= d[s.x][s.y]) {
            d[s.x][s.y] = s.t;
            if ((s.x + 1) > 0 && ((s.x + 1) <= n && (a[s.x + 1][s.y]) != '#'))
            	q.push({ s.x + 1, s.y, s.t + 1 });
            if ((s.y + 1) > 0 && ((s.y + 1) <= m && (a[s.x][s.y + 1]) != '#'))
                q.push({ s.x, s.y + 1, s.t + 1 });
            if ((s.x - 1) > 0 && ((s.x - 1) <= n && (a[s.x - 1][s.y]) != '#'))
                q.push({ s.x - 1, s.y, s.t + 1 });
            if ((s.y - 1) > 0 && ((s.y - 1) <= m && (a[s.x][s.y - 1]) != '#'))
                q.push({ s.x, s.y - 1, s.t + 1 });
        }
    }
    
    cout << -1 << endl;
    return;
}
int main() {
    cin >> n >> m;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= m; j++) {
            cin >> a[i][j];
            if (a[i][j] == 'S') {
                s.x = i;
                s.y = j;
                s.t = 0;
            }
            if (a[i][j] == 'T') {
                t.x = i;
                t.y = j;
            }
        }
    }
    bfs();
    return 0;
}


此代码 Memory Limit Exceeded (MLE)

回复

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

正在加载回复...