Cod sursa(job #2791279)

Utilizator HadircaDionisieHadirca Dionisie HadircaDionisie Data 30 octombrie 2021 12:21:03
Problema Rj Scor 0
Compilator py Status done
Runda Arhiva de probleme Marime 1.91 kb
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))