| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1370281 | eyadooz | Zoo (COCI19_zoo) | C++20 | 0 ms | 344 KiB |
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
#define pb push_back
#define all(x) (x).begin(), (x).end()
#define sz(x) (int) (x).size()
#define endl '\n'
#define int long long
int ne[4]={0, 0, 1, -1}, nex[4]={1, -1, 0, 0};
main()
{
cin.tie(0) -> sync_with_stdio(0);
int n, m;
cin >> n >> m;
string a[n];
for(auto& i : a) cin >> i;
int dis[n+1][m+1]={};
for(int i=0;i<n;i++) for(int j=0;j<m;j++) dis[i][j]=LONG_LONG_MAX;
priority_queue<array<int, 3>> q;
dis[0][0]=0;
q.push({0, 0, 0});
int mx=0;
while(sz(q)) {
auto[cw, curx, cury]=q.top();
cw*=-1;
q.pop();
if(cw!=dis[curx][cury]) continue;
for(int i = 0;i < 4;i++) {
int nx=curx+ne[i], ny=cury+nex[i];
if(nx>=n||nx<0||ny>=m||ny<0||a[nx][ny]=='*') continue;
if(dis[nx][ny]>cw+(a[curx][cury]!=a[nx][ny]))
{
dis[nx][ny]=cw+(a[curx][cury]!=a[nx][ny]);
mx=max(mx, dis[nx][ny]);
q.push({-dis[nx][ny], nx, ny});
}
}
}
cout << mx << endl;
}
Compilation message (stderr)
| # | Result | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Result | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
