Cod sursa(job #2806231)

Utilizator namesurname01Name Surname namesurname01 Data 22 noiembrie 2021 14:24:52
Problema Distante Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.64 kb
#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;
}