Pagini recente » Cod sursa (job #942952) | Cod sursa (job #248476) | Cod sursa (job #3339927) | Cod sursa (job #2377192) | Cod sursa (job #3355939)
#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 - 1) / m + 1, yp = (k - 1) % m + 1;
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 (x >= 1 && x <= n && y >= 1 && y <= m && 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;
}