266282026-04-04 11:09:35KristófLegközelebbi mezőkcpp17Elfogadva 100/100536ms26164 KiB
#include <iostream>
#include <vector>
#include <queue>
#include <map>
#include <climits>
#include <algorithm>
using namespace std;

bool lehet(pair<int,int> pos,vector<vector<char>> &adj,int &n,int &m)
{
if(pos.first<0 || pos.first>=n || pos.second<0 || pos.second>=m)return false;
return true;
}

int main()
{
    int n,m;
    cin>>n>>m;
    vector<vector<char>> adj(n,vector<char> (m));
    pair<int,int> posA,posB;
    for(int i=0;i<n;i++)
        {
        for(int j=0;j<m;j++)
            {
            cin>>adj[i][j];
            if(adj[i][j]=='A')posA={i,j};
            if(adj[i][j]=='B')posB={i,j};
            }
        }
    queue<pair<int,int>> q;
    q.push(posA);

    vector<vector<bool>> vis(n,vector<bool> (m,false));
    vis[posA.first][posA.second]=true;
    queue<pair<int,int>> q2;
    vector<vector<int>> dist(n,vector<int> (m,INT_MAX));
    vector<vector<bool>> vis2(n,vector<bool> (m,false));
    while(q.size())
        {
        dist[q.front().first][q.front().second]=0;
        q2.push(q.front());
        vis2[q.front().first][q.front().second]=true;
        auto [x,y]=q.front();q.pop();

        if(x==posB.first && y==posB.second)
            {
            cout<<0;
            return 0;
            }
        if(lehet({x-1,y},adj,n,m) && adj[x-1][y]!='#' && !vis[x-1][y])
            {
            vis[x-1][y]=true;
            q.push({x-1,y});
            }
        if(lehet({x+1,y},adj,n,m) && adj[x+1][y]!='#' &&!vis[x+1][y] )
            {
            vis[x+1][y]=true;
            q.push({x+1,y});
            }
        if(lehet({x,y-1},adj,n,m) && adj[x][y-1]!='#' && !vis[x][y-1] )
            {
            vis[x][y-1]=true;
            q.push({x,y-1});
            }
        if(lehet({x,y+1},adj,n,m)  &&!vis[x][y+1] && adj[x][y+1]!='#')
            {
            vis[x][y+1]=true;
            q.push({x,y+1});
            }
        }
    while(q2.size())
        {
        auto [x,y]=q2.front();q2.pop();
        if( lehet({x-1,y},adj,n,m) && !vis2[x-1][y] )
            {
            vis2[x-1][y]=true;
            q2.push({x-1,y});
            dist[x-1][y]=min(dist[x-1][y],dist[x][y]+1);
            }
        if(lehet({x+1,y},adj,n,m) &&!vis2[x+1][y]  )
            {
            vis2[x+1][y]=true;
            q2.push({x+1,y});
            dist[x+1][y]=min(dist[x+1][y],dist[x][y]+1);
            }
        if(lehet({x,y-1},adj,n,m)&&!vis2[x][y-1] )
            {
            vis2[x][y-1]=true;
            q2.push({x,y-1});
            dist[x][y-1]=min(dist[x][y-1],dist[x][y]+1);
            }
        if(lehet({x,y+1},adj,n,m) && !vis2[x][y+1] )
            {
            vis2[x][y+1]=true;
            q2.push({x,y+1});
            dist[x][y+1]=min(dist[x][y+1],dist[x][y]+1);
            }
        }
    int ans=dist[posB.first][posB.second];
    while(q.size())q.pop();
    fill(vis.begin(),vis.end(),vector<bool> (m,false));
    q.push(posB);
    vis[posB.first][posB.second]=true;
    while(q.size())
        {
        auto [x,y]=q.front();q.pop();
        if(lehet({x-1,y},adj,n,m)&& !vis[x-1][y]  && adj[x-1][y]!='#')
            {
            vis[x-1][y]=true;
            q.push({x-1,y});
            ans=min(ans,dist[x-1][y]);
            }
        if(lehet({x+1,y},adj,n,m) && !vis[x+1][y] && adj[x+1][y]!='#')
            {
            vis[x+1][y]=true;
            q.push({x+1,y});
            ans=min(ans,dist[x+1][y]);
            }
        if(lehet({x,y-1},adj,n,m) && !vis[x][y-1] && adj[x][y-1]!='#')
            {
            vis[x][y-1]=true;
            q.push({x,y-1});
            ans=min(ans,dist[x][y-1]);
            }
        if(lehet({x,y+1},adj,n,m) && !vis[x][y+1] && adj[x][y+1]!='#')
            {
            vis[x][y+1]=true;
            q.push({x,y+1});
            ans=min(ans,dist[x][y+1]);
            }
        }
    cout<<ans;
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms316 KiB
2Elfogadva1ms316 KiB
3Elfogadva1ms316 KiB
subtask210/10
4Elfogadva1ms316 KiB
5Elfogadva1ms316 KiB
6Elfogadva1ms508 KiB
7Elfogadva2ms316 KiB
8Elfogadva2ms316 KiB
9Elfogadva2ms316 KiB
10Elfogadva2ms316 KiB
11Elfogadva2ms316 KiB
12Elfogadva1ms380 KiB
13Elfogadva2ms316 KiB
14Elfogadva2ms316 KiB
subtask320/20
15Elfogadva19ms1572 KiB
16Elfogadva14ms1644 KiB
17Elfogadva156ms13944 KiB
18Elfogadva96ms8156 KiB
19Elfogadva14ms1380 KiB
20Elfogadva24ms1940 KiB
21Elfogadva23ms1592 KiB
22Elfogadva133ms10804 KiB
23Elfogadva23ms1588 KiB
24Elfogadva245ms12084 KiB
subtask420/20
25Elfogadva1ms316 KiB
26Elfogadva1ms316 KiB
27Elfogadva1ms508 KiB
28Elfogadva97ms5172 KiB
29Elfogadva90ms4916 KiB
30Elfogadva79ms4216 KiB
31Elfogadva90ms4916 KiB
32Elfogadva71ms3912 KiB
33Elfogadva97ms5428 KiB
34Elfogadva104ms5488 KiB
35Elfogadva71ms3932 KiB
36Elfogadva97ms5172 KiB
37Elfogadva97ms5440 KiB
38Elfogadva185ms9596 KiB
39Elfogadva432ms21304 KiB
40Elfogadva460ms21300 KiB
41Elfogadva453ms21300 KiB
42Elfogadva435ms21292 KiB
subtask550/50
43Elfogadva1ms316 KiB
44Elfogadva1ms316 KiB
45Elfogadva1ms508 KiB
46Elfogadva2ms316 KiB
47Elfogadva2ms316 KiB
48Elfogadva2ms316 KiB
49Elfogadva2ms316 KiB
50Elfogadva2ms316 KiB
51Elfogadva1ms380 KiB
52Elfogadva2ms316 KiB
53Elfogadva2ms316 KiB
54Elfogadva19ms1572 KiB
55Elfogadva14ms1644 KiB
56Elfogadva156ms13944 KiB
57Elfogadva96ms8156 KiB
58Elfogadva14ms1380 KiB
59Elfogadva24ms1940 KiB
60Elfogadva23ms1592 KiB
61Elfogadva133ms10804 KiB
62Elfogadva23ms1588 KiB
63Elfogadva245ms12084 KiB
64Elfogadva97ms5172 KiB
65Elfogadva90ms4916 KiB
66Elfogadva79ms4216 KiB
67Elfogadva90ms4916 KiB
68Elfogadva71ms3912 KiB
69Elfogadva97ms5428 KiB
70Elfogadva104ms5488 KiB
71Elfogadva71ms3932 KiB
72Elfogadva97ms5172 KiB
73Elfogadva97ms5440 KiB
74Elfogadva185ms9596 KiB
75Elfogadva432ms21304 KiB
76Elfogadva460ms21300 KiB
77Elfogadva453ms21300 KiB
78Elfogadva435ms21292 KiB
79Elfogadva105ms5956 KiB
80Elfogadva107ms5688 KiB
81Elfogadva81ms4916 KiB
82Elfogadva75ms4404 KiB
83Elfogadva96ms5352 KiB
84Elfogadva115ms6964 KiB
85Elfogadva83ms4660 KiB
86Elfogadva70ms4220 KiB
87Elfogadva109ms5940 KiB
88Elfogadva108ms6436 KiB
89Elfogadva79ms4516 KiB
90Elfogadva112ms6424 KiB
91Elfogadva126ms6960 KiB
92Elfogadva103ms5684 KiB
93Elfogadva109ms5940 KiB
94Elfogadva119ms6720 KiB
95Elfogadva64ms5684 KiB
96Elfogadva112ms5776 KiB
97Elfogadva111ms6452 KiB
98Elfogadva75ms4416 KiB
99Elfogadva354ms17972 KiB
100Elfogadva405ms21652 KiB
101Elfogadva112ms5940 KiB
102Elfogadva365ms19764 KiB
103Elfogadva230ms20788 KiB
104Elfogadva510ms25128 KiB
105Elfogadva481ms23840 KiB
106Elfogadva536ms26164 KiB
107Elfogadva503ms23348 KiB