LeetCode Weekly Contest 150
問題文
省略
省略
C++に変換後のコードはこちら
#define main dummy_main
{}
#undef main
int x, y;
int dist[100][100];
int q[10000], qs, qe;
class Solution {
public:
int maxDistance(vector<vector<int>>& A) {
int i, j, k;
int di[4] = {-1,1,0,0}, dj[4] = {0,0,-1,1}, d, si, sj, ni, nj;
int res = 0;
x = A.size();
y = A[0].size();
rep(i,x) rep(j,y) dist[i][j] = -1;
qs = qe = 0;
rep(i,x) rep(j,y) if(A[i][j]==1){
dist[i][j] = 0;
q[qe++] = i*y+j;
}
while(qs < qe){
k = q[qs++];
si = k / y;
sj = k % y;
rep(d,4){
ni = si + di[d];
nj = sj + dj[d];
if(ni < 0 || nj < 0 || ni >= x || nj >= y || dist[ni][nj]>=0) continue;
dist[ni][nj] = dist[si][sj] + 1;
q[qe++] = ni * y + nj;
}
}
rep(i,x) rep(j,y) res >?= dist[i][j];
if(res==0) res = -1;
return res;
}
};
Current time: 2024年05月08日11時57分54秒
Last modified: 2019年08月20日01時42分20秒 (by laycrs)
Tags: Competitive_Programming_Incomplete LeetCode
トップページに戻る
Logged in as: unknown user (not login)