Pagini recente » Cod sursa (job #46895) | Cod sursa (job #2221306) | Cod sursa (job #123621)
Cod sursa(job #123621)
#include <stdio.h>
#define NMax 155
int n, m, start, key[NMax][NMax], viz[NMax][NMax], keys[NMax*NMax];
int dx[4] = {-1, 0, 1, 0};
int dy[4] = {0, 1, 0, -1};
void read();
void solve();
int main()
{
read();
solve();
return 0;
}
void read()
{
int i, j;
FILE *fin = fopen("castel.in", "rt");
fscanf(fin, "%d %d %d", &n, &m, &start);
for (i = 1; i <= n; i++)
for (j = 1; j <= m; j++)
fscanf(fin, "%d", &key[i][j]);
}
void solve()
{
int go = 1, ok, i, j, k;
keys[key[(start-1)/m+1][(start-1)%m+1]] = 1;
viz[(start-1)/m+1][(start-1)%m+1] = 1;
while (go)
{
go = 0;
for (i = 1; i <= n; i++)
for (j = 1; j <= m; j++)
{
ok = keys[key[i][j]] && (viz[i][j] == 0);
for (k = 0; ok == 1 && k < 4; k++)
if (viz[i+dx[k]][j+dy[k]])
ok = 2;
if (ok == 2)
{
viz[i][j] = 1;
keys[(i-1)*m + j] = 1;
go++;
}
}
}
k = 0;
for (i = 1; i <= n; i++)
for (j = 1; j <= m; j++)
k += viz[i][j];
fprintf(fopen("castel.out", "wt"), "%d\n", k);
}