Pagini recente » Cod sursa (job #1530948) | Cod sursa (job #2184848) | Cod sursa (job #2379714) | Cod sursa (job #2303880) | Cod sursa (job #2208957)
#include <bits/stdc++.h>
#define all(cont) cont.begin(), cont.end()
#define pb push_back
using namespace std;
ifstream f ("castel.in");
ofstream g ("castel.out");
const int NMAX = 151;
int v[NMAX * NMAX];
bool vis[NMAX * NMAX];
bool key[NMAX * NMAX];
vector <int> q;
int main() {
int n, m, k;
f >> n >> m >> k;
int p = 0;
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j) {
f >> v[++p];
}
}
int dir[] = {-1, 1, -m, m};
key[v[k]] = true;
vis[k] = true;
q.pb(k);
bool finished = false;
int ans = 1;
while (!finished) {
finished = true;
for (auto &pos : q) {
for (int d = 0;d < 4; ++d) {
int newPos = pos + dir[d];
if ((d == 0 && newPos % m == 0) ||
(d == 1 && newPos % m == 1) ||
newPos < 1 ||
newPos > n * m || vis[newPos]) {
continue;
}
if (key[v[newPos]]) {
key[newPos] = true;
vis[newPos] = true;
q.pb(newPos);
finished = false;
++ans;
}
}
}
}
g << ans << '\n';
f.close();
g.close();
return 0;
}