{"code":"shortestpathmaze","name":"Tìm đường đi ngắn nhất trong mê cung","description":"## Mô tả:\r\nCho một mê cung hình chữ nhật được biểu diễn bằng một ma trận kích thước `N x M`, trong đó:\r\n- Ô có giá trị `0` là ô trống, có thể di chuyển qua.\r\n- Ô có giá trị `1` là ô tường, không thể di chuyển qua.\r\n\r\nNgười chơi bắt đầu tại tọa độ `(x1, y1)` và cần di chuyển đến tọa độ `(x2, y2)` bằng cách di chuyển theo 4 hướng: trên, dưới, trái, phải. Bạn cần tìm đường đi ngắn nhất từ vị trí bắt đầu đến vị trí đích trong mê cung, nếu có. Nếu không có đường đi, trả về `-1`.\r\n\r\n## Input:\r\n- Dòng đầu tiên chứa hai số nguyên `N` và `M` (1 ≤ N, M ≤ 1000) — kích thước của mê cung (số hàng và số cột).\r\n- Dòng thứ hai chứa hai số nguyên `x1` và `y1` — tọa độ bắt đầu (0 ≤ x1 < N, 0 ≤ y1 < M).\r\n- Dòng thứ ba chứa hai số nguyên `x2` và `y2` — tọa độ kết thúc (0 ≤ x2 < N, 0 ≤ y2 < M).\r\n- Tiếp theo là N dòng, mỗi dòng chứa M số nguyên `0` hoặc `1`, biểu diễn mê cung.\r\n\r\n## Output:\r\n- Trả về độ dài của đường đi ngắn nhất từ điểm bắt đầu đến điểm kết thúc. Nếu không có đường đi, trả về `-1`. \r\n## Ràng buộc:\r\n```\r\n2 ≤ N, M ≤ 1000\r\n0 ≤ x1, y1, x2, y2 < N, M\r\n```\r\n\r\n\r\n## Ví dụ:\r\n### Input 1:\r\n```\r\n5 5\r\n0 0\r\n4 4\r\n0 1 0 0 0\r\n0 1 1 1 0\r\n0 0 0 1 0\r\n1 1 0 0 0\r\n0 0 0 1 0\r\n```\r\n### Output 1:\r\n```\r\n8\r\n```\r\n### Input 2:\r\n```\r\n7 7\r\n0 0\r\n6 6\r\n0 0 0 0 0 0 0\r\n1 1 1 1 1 1 0\r\n1 1 1 1 1 1 0\r\n1 1 1 1 1 1 0\r\n1 1 1 1 1 1 0\r\n1 1 1 1 1 1 0\r\n0 0 0 0 0 0 0\r\n```\r\n### Output 2:\r\n```\r\n12\r\n```","points":100.0,"partial":true,"time_limit":1.5,"memory_limit":262144,"short_circuit":false,"allowed_languages":[3,4,34,36,37,5,6,11,12,14,28,2,38,39,9,18,17,29,23,27,35,25,26,10,7,19,32,1,8,15,16,24,20,33,13,41,21,40],"is_public":true,"is_manually_managed":false,"permissions":{"can_edit":false}}