#!/usr/bin/python3 from collections import deque # Načteme vstup r, s = map(int, input().split()) mapa = [] for _ in range(r): radek = input() assert len(radek) == s mapa.append(radek) # Místo na ukládání vzdálenosti od nejbližšího počátečního čtverečku vzdalenost = [ [None] * s for _ in range(r) ] # Místo na uložení výsledného obrázku vysledek = [ [" "] * s for _ in range(r) ] fronta = deque() for i in range(r): for j in range(s): if mapa[i][j] != '.': fronta.append((i, j)) vysledek[i][j] = mapa[i][j] vzdalenost[i][j] = 0 while len(fronta) > 0: i, j = fronta.popleft() v = vzdalenost[i][j] + 1 aktualni_barva = vysledek[i][j] def zkus(ii, jj): # pokud jsme mimo hranice obrázku, neděláme nic if ii >= 0 and ii < r and jj >= 0 and jj < s: # Pokud toto místo ještě nebylo navštíveno, tak mu přiřadíme barvu a vzdálenost. if vysledek[ii][jj] == ' ': vysledek[ii][jj] = aktualni_barva vzdalenost[ii][jj] = v # A přidáme jako nový hraniční čtvereček... fronta.append((ii, jj)) # Pokud již bylo navštíveno jinou barvou a je stejně daloko od počátečního čtverečku... elif vzdalenost[ii][jj] == v and vysledek[ii][jj] != aktualni_barva: vysledek[ii][jj] = '.' # Zkusíme všechny sousedy. zkus(i-1, j) zkus(i+1, j) zkus(i, j-1) zkus(i, j+1) # Nakonec vytiskneme výsledek. for i in range(r): print("".join(vysledek[i]))