261922026-03-20 20:40:02LazurAndrasLegközelebbi mezőkcpp17Elfogadva 100/100254ms35380 KiB
#include <bits/stdc++.h>
using namespace std;

int n, m;
vector<vector<char>>g;
vector<vector<bool>>vis;

void dfs(int i, int j)
{
    if(i < 0 || i >= n || j < 0 || j >= m || vis[i][j] || g[i][j] == '#') return;
    vis[i][j] = 1;
    dfs(i+1, j);
    dfs(i-1, j);
    dfs(i, j+1);
    dfs(i, j-1);
}

signed main() {
    ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
    cin >> n >> m;
    g.resize(n, vector<char>(m)); vis.resize(n, vector<bool>(m));
    pair<int, int>a, b;
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < m; j++)
        {
            cin >> g[i][j];
            if(g[i][j] == 'A') a = {i, j};
            if(g[i][j] == 'B') b = {i, j};
        }
    }
    dfs(a.first, a.second);
    if(vis[b.first][b.second]) {cout << 0; return 0;}
    queue<pair<int, int>>q;
    vector<vector<int>>dist(n, vector<int>(m, -1));
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < m; j++)
        {
            if(vis[i][j])
            {
                dist[i][j] = 0;
                q.push({i, j});
            }
        }
    }
    int ans = 4000;
    dfs(b.first, b.second);
    while(!q.empty())
    {
        auto [i, j] = q.front();
        q.pop();
        if(dist[i][j] != 0 && vis[i][j]) ans = min(ans, dist[i][j]);
        if(i > 0 && dist[i-1][j] == -1) {dist[i-1][j] = dist[i][j] + 1; q.push({i-1, j});}
        if(i < n-1 && dist[i+1][j] == -1) {dist[i+1][j] = dist[i][j] + 1; q.push({i+1, j});}
        if(j > 0 && dist[i][j-1] == -1) {dist[i][j-1] = dist[i][j] + 1; q.push({i, j-1});}
        if(j < m-1 && dist[i][j+1] == -1) {dist[i][j+1] = dist[i][j] + 1; q.push({i, j+1});}
    }
    cout << ans;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms316 KiB
2Elfogadva1ms508 KiB
3Elfogadva1ms316 KiB
subtask210/10
4Elfogadva1ms316 KiB
5Elfogadva1ms316 KiB
6Elfogadva1ms316 KiB
7Elfogadva1ms492 KiB
8Elfogadva1ms316 KiB
9Elfogadva1ms332 KiB
10Elfogadva1ms316 KiB
11Elfogadva1ms316 KiB
12Elfogadva1ms332 KiB
13Elfogadva1ms496 KiB
14Elfogadva1ms564 KiB
subtask320/20
15Elfogadva8ms1892 KiB
16Elfogadva6ms1332 KiB
17Elfogadva54ms8144 KiB
18Elfogadva29ms5344 KiB
19Elfogadva4ms820 KiB
20Elfogadva12ms2636 KiB
21Elfogadva10ms2884 KiB
22Elfogadva34ms3492 KiB
23Elfogadva9ms2128 KiB
24Elfogadva97ms16276 KiB
subtask420/20
25Elfogadva1ms316 KiB
26Elfogadva1ms316 KiB
27Elfogadva1ms316 KiB
28Elfogadva35ms5172 KiB
29Elfogadva35ms5628 KiB
30Elfogadva28ms4904 KiB
31Elfogadva34ms5700 KiB
32Elfogadva27ms4404 KiB
33Elfogadva37ms5940 KiB
34Elfogadva37ms6408 KiB
35Elfogadva27ms4488 KiB
36Elfogadva35ms6004 KiB
37Elfogadva35ms5184 KiB
38Elfogadva67ms10912 KiB
39Elfogadva165ms20784 KiB
40Elfogadva164ms24628 KiB
41Elfogadva159ms24608 KiB
42Elfogadva158ms23092 KiB
subtask550/50
43Elfogadva1ms316 KiB
44Elfogadva1ms316 KiB
45Elfogadva1ms316 KiB
46Elfogadva1ms492 KiB
47Elfogadva1ms316 KiB
48Elfogadva1ms332 KiB
49Elfogadva1ms316 KiB
50Elfogadva1ms316 KiB
51Elfogadva1ms332 KiB
52Elfogadva1ms496 KiB
53Elfogadva1ms564 KiB
54Elfogadva8ms1892 KiB
55Elfogadva6ms1332 KiB
56Elfogadva54ms8144 KiB
57Elfogadva29ms5344 KiB
58Elfogadva4ms820 KiB
59Elfogadva12ms2636 KiB
60Elfogadva10ms2884 KiB
61Elfogadva34ms3492 KiB
62Elfogadva9ms2128 KiB
63Elfogadva97ms16276 KiB
64Elfogadva35ms5172 KiB
65Elfogadva35ms5628 KiB
66Elfogadva28ms4904 KiB
67Elfogadva34ms5700 KiB
68Elfogadva27ms4404 KiB
69Elfogadva37ms5940 KiB
70Elfogadva37ms6408 KiB
71Elfogadva27ms4488 KiB
72Elfogadva35ms6004 KiB
73Elfogadva35ms5184 KiB
74Elfogadva67ms10912 KiB
75Elfogadva165ms20784 KiB
76Elfogadva164ms24628 KiB
77Elfogadva159ms24608 KiB
78Elfogadva158ms23092 KiB
79Elfogadva54ms9012 KiB
80Elfogadva46ms7532 KiB
81Elfogadva41ms7732 KiB
82Elfogadva32ms6196 KiB
83Elfogadva41ms7004 KiB
84Elfogadva68ms16428 KiB
85Elfogadva32ms5916 KiB
86Elfogadva30ms5240 KiB
87Elfogadva50ms6976 KiB
88Elfogadva50ms9268 KiB
89Elfogadva39ms6708 KiB
90Elfogadva54ms9176 KiB
91Elfogadva64ms12172 KiB
92Elfogadva43ms6608 KiB
93Elfogadva46ms7476 KiB
94Elfogadva63ms11316 KiB
95Elfogadva20ms3636 KiB
96Elfogadva41ms6964 KiB
97Elfogadva48ms8468 KiB
98Elfogadva34ms5940 KiB
99Elfogadva164ms26168 KiB
100Elfogadva199ms28820 KiB
101Elfogadva48ms7580 KiB
102Elfogadva156ms27548 KiB
103Elfogadva86ms14132 KiB
104Elfogadva246ms31028 KiB
105Elfogadva202ms27032 KiB
106Elfogadva254ms35380 KiB
107Elfogadva200ms28980 KiB