Pagini recente » Cod sursa (job #1008876) | Cod sursa (job #3339823) | Cod sursa (job #2563306) | Cod sursa (job #3328470) | Cod sursa (job #3355937)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("castel.in");
ofstream fout ("castel.out");
const int NMAX = 150, l[4] = {0, 1, 0, -1}, c[4] = {-1, 0, 1, 0};
int n, m, k, v[NMAX + 5][NMAX + 5], lg;
pair <int, int> w[NMAX * NMAX + 5];
unordered_map <int, bool> f;
bool flag = true;
int main() {
fin >> n >> m >> k;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++)
fin >> v[i][j];
}
int xp = k / m, yp = k % m;
if (xp == 0)
xp++;
if (yp == 0)
xp--, yp = m;
w[++lg] = {xp, yp};
f[k] = 1;
while (flag == true) {
flag = false;
for (int i = 1; i <= lg; i++) {
for (int j = 0; j < 4; j++) {
int x = w[i].first + l[j], y = w[i].second + c[j];
if (f[v[x][y]] && !f[(x - 1) * m + y]) {
f[(x - 1) * m + y] = 1;
w[++lg] = {x, y};
flag = true; // printesa a descoperit inca o camera
}
}
}
}
int ans = 0;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++)
ans += f[(i - 1) * m + j];
}
fout << ans << "\n";
return 0;
}