class Solution:
def orangesRotting(self, grid: List[List[int]]) -> int:
nb_rows = len(grid)
nb_cols = len(grid[0])
x = [0, 0, 1, -1]
y = [1, -1, 0, 0]
t = 0
queue = []
queue2 = []
grid_set = set([num for l in grid for num in l])
if 1 in grid_set and 2 not in grid_set:
return -1
if 1 not in grid_set and 2 in grid_set:
return 0
for i in range(nb_rows):
for j in range(nb_cols):
if grid[i][j] == 2:
queue.append((i, j))
while queue:
(i, j) = queue.pop(0)
for k in range(4):
new_x = i + x[k]
new_y = j + y[k]
if new_x >= 0 and new_x < nb_rows and new_y >= 0 and new_y < nb_cols:
if grid[new_x][new_y] == 1:
grid[new_x][new_y] = 2
queue2.append((new_x, new_y))
if not queue:
if queue2:
t += 1
queue = queue2
queue2 = []
grid_set = set([num for l in grid for num in l])
if 1 in grid_set:
return -1
return t
1699A - The Third Three Number Problem | 1617B - GCD Problem |
841A - Generous Kefa | 1690B - Array Decrements |
1692C - Where's the Bishop | 104A - Blackjack |
1438A - Specific Tastes of Andre | 1711C - Color the Picture |
1194C - From S To T | 110B - Lucky String |
1114A - Got Any Grapes | 224B - Array |
125B - Simple XML | 567B - Berland National Library |
431B - Shower Line | 282C - XOR and OR |
1582B - Luntik and Subsequences | 609A - Флеш-карты |
1207A - There Are Two Types Of Burgers | 371C - Hamburgers |
343B - Alternating Current | 758B - Blown Garland |
1681B - Card Trick | 1592A - Gamer Hemose |
493D - Vasya and Chess | 1485A - Add and Divide |
337B - Routine Problem | 1392D - Omkar and Bed Wars |
76E - Points | 762C - Two strings |