problem:https://leetcode.com/problems/shortest-path-in-binary-matrix/
非常基础的单源无权最短路径,没有任何变化。
int dx[] = {1,0,-1,0,1,-1,1,-1}; int dy[] = {0,1,0,-1,1,1,-1,1}; class Solution { public: int shortestPathBinaryMatrix(vector<vector<int>>& grid) { int s = grid.size() * grid.size(); int n = grid.size(); if(grid[n-1][n-1]==1)return -1; if(grid[0][0]==1)return -1; if(n >= 2) { if(grid[n-2][n-2]==1 && grid[n-1][n-2]==1&&grid[n-2][n-1]==1)return -1; } vector<int> dist(s,INT_MAX); queue<int> q; q.push(0); dist[0] = 1; while(!q.empty()) { int v = q.front();q.pop(); int i = v / n; int j = v % n; for(int k = 0;k < 8;k++) { int x0 = i + dx[k]; int y0 = j + dy[k]; int t = x0 * n + y0; if(x0 >=0 && y0 >=0 && x0 < n && y0 < n && grid[x0][y0] == 0 && dist[t] == INT_MAX) { dist[t] = dist[v] + 1; q.push(t); } } } if(dist[s-1] == INT_MAX) return -1; return dist[s - 1]; } };
[宽度优先搜索] leetcode 1091 Shortest Path in Binary Matrix
原文:https://www.cnblogs.com/fish1996/p/11312170.html