Pagini recente » Cod sursa (job #48856) | Cod sursa (job #1356725) | Rating Rares Andrei (igrcwoot) | Cod sursa (job #1776957) | Cod sursa (job #2791279)
with open('rj.in') as f:
n, m = [int(i) for i in (f.readline().split())]
mat = [[0 for i in range(m+2)] for j in range(n+2)]
rlee = [[0 for i in range(m+2)] for j in range(n+2)]
jlee = [[0 for i in range(m+2)] for j in range(n+2)]
for i in range(1,n+1):
s = f.readline()
for j in range(len(s)):
if s[j] == 'X':
mat[i][j+1] = 1
elif s[j] == 'R':
rcx = i
rcy = j+1
elif s[j] == 'J':
jcx = i
jcy = j+1
def verif(x, y):
global n
return (0 < x <= n) and (0 < y <= n)
# for i in mat:
# print(i)
#
# print(rcx,rcy)
# print(jcx,jcy)
dx = [0, 0, -1, 1, 1, -1, 1, -1]
dy = [-1, 1, 0, 0, 1, -1, -1, 1]
def leer(i,j):
global dx, dy, rlee
q = [(i,j)];
rlee[i][j] = 1
while(len(q) != 0):
x = q[0][0]
y = q[0][1]
q.pop(0)
for i in range(8):
xx = x + dx[i]
yy = y + dy[i]
if verif(xx,yy) and mat[xx][yy] == 0 and rlee[xx][yy] == 0:
rlee[xx][yy] = rlee[x][y] + 1
q.append((xx,yy))
def leej(i,j):
global dx, dy, jlee
q = [(i,j)]
jlee[i][j] = 1
while(len(q) != 0):
x = q[0][0]
y = q[0][1]
q.pop(0)
for i in range(8):
xx = x + dx[i]
yy = y + dy[i]
if verif(xx,yy) and mat[xx][yy] == 0 and jlee[xx][yy] == 0:
jlee[xx][yy] = jlee[x][y] + 1
q.append((xx,yy))
leer(rcx,rcy)
leej(jcx,jcy)
minc = 9999999
for i in range(1,n+1):
for j in range(1,m+1):
if(rlee[i][j] == jlee[i][j] and rlee[i][j]>0 and rlee[i][j] < minc):
minc = rlee[i][j]
fx = i
fy = j
with open('rj.out','w') as g:
g.write(str(minc)+' '+str(fx)+' '+str(fy))