Pagini recente » Cod sursa (job #1660609) | Cod sursa (job #2178609) | Cod sursa (job #2430254) | Cod sursa (job #171996) | Cod sursa (job #2198166)
#include <cstdio>
#include <queue>
using namespace std;
const int NMAX = 155;
int v[NMAX * NMAX];
int q[NMAX * NMAX];
int vf[NMAX * NMAX];
int cheie[NMAX * NMAX];
int main()
{
int n, m, k;
freopen("castel.in", "r", stdin);
freopen("castel.out", "w", stdout);
scanf("%d%d%d", &m, &n, &k);
int dir[]= {1, -1, n, -n};
int p = 0, top = 0;
for(int i = 1; i <= n; ++i) {
for(int j = 1; j <= m; ++j) {
scanf("%d", &v[++p]);
}
}
vf[k] = 1;
cheie[k] = 1;
q[++top] = k;
bool ok = 0;
while(ok == 0) {
ok = 1;
for(int i = 1; i <= top; ++i) {
for(int j = 0; j < 4; ++j) {
int np = q[i] + dir[j];
if(1 > np || n * m < np || vf[np] != 0 || (dir[j] == -1 && np % n == 0)) {
continue;
}
if(cheie[v[np]] == 1) {
ok = 0;
vf[np] = 1;
cheie[np] = 1;
q[++top] = np;
}
}
}
}
int sol = 0;
for(int i = 1; i <= n * m; ++i)
if(vf[i] == 1)
++sol;
printf("%d\n", sol);
return 0;
}