using System.Collections.Generic;
public static List<int[]> directions = new List<int[]>()
public static Tuple<int, Queue<int[]>> InitializeGrid(int[][] grid)
var q = new Queue<int[]>();
for (int i = 0; i < Rows; i++)
for (int j = 0; j < Cols; j++)
q.Enqueue(new int[] { i, j });
else if (grid[i][j] == 1)
return new Tuple<int, Queue<int[]>>(freshCount, q);
public static int GetShelfDaysForOranges(int[][] grid)
var data = InitializeGrid(grid);
int freshCount = data.Item1;
Queue<int[]> q = data.Item2;
var next = new Queue<int[]>();
int[] curRotten = q.Dequeue();
foreach (int[] dir in directions)
int x = curRotten[0] + dir[0];
int y = curRotten[1] + dir[1];
if (x < 0 || x >= Rows || y < 0 || y >= Cols || grid[x][y] == 0 || grid[x][y] == 2)
next.Enqueue(new int[] { x, y });
next = new Queue<int[]>();
return freshCount == 0 ? result - 1 : -1;
public static void Main()
Console.WriteLine("UniLecs");
var oranges = new int[][]
Console.WriteLine(GetShelfDaysForOranges(oranges));
Console.WriteLine(GetShelfDaysForOranges(oranges));