Pagini recente » Istoria paginii runda/simlotvrancea2010baraj1.1 | Cod sursa (job #2413282) | Rating Ondina Lipsa (Ondina) | Cod sursa (job #2818846) | Cod sursa (job #2806231)
#include <stdio.h>
using namespace std;
FILE* f, * g;
int a[252][252];
struct Lee
{
int lin, col;
};
Lee dir[5] = { {-1,0},{0,1},{1,0},{0,-1} };
Lee coada[252 * 252];
int main()
{
int n, x, y, xx, yy, nr = 0, ps, pi, k, i, j;
char c;
f = fopen("muzeu.in", "r");
g = fopen("muzeu.out", "w");
fscanf(f, "%d", &n);
fscanf(f, "%c", &c);
for (i = 1;i <= n;i++)
{
for (j = 1;j <= n;j++)
{
fscanf(f, "%c", &c);
if (c == '.')
{
a[i][j] = 0;
}
else
{
if (c == '#')
{
a[i][j] = -1;
}
else
{
coada[++nr].lin = i;
coada[nr].col = j;
a[i][j] = 1;
}
}
}
fscanf(f, "%c", &c);
}
ps = 1;
pi = nr;
while (ps <= pi)
{
x = coada[ps].lin;
y = coada[ps].col;
for (k = 0;k <= 3;k++)
{
xx = x + dir[k].lin;
yy = y + dir[k].col;
if (a[xx][yy] == 0 && xx >= 1 && xx <= n && yy >= 1 && yy <= n)
{
a[xx][yy] = a[x][y] + 1;
pi++;
coada[pi].lin = xx;
coada[pi].col = yy;
}
}
ps++;
}
for (i = 1;i <= n;i++)
{
for (j = 1;j <= n;j++)
{
fprintf(g, "%d ", a[i][j] - 1);
}
fprintf(g, "\n");
}
fclose(f);
fclose(g);
return 0;
}