//By Koios1143 #include<iostream> usingnamespacestd; int n, m, S=0, que[2550][2]; int dx[] = {0, 0}; int dy[] = {-1, 1}; char arr[55][55]; bool vis[55][55];
voidBFS(){ for(int i=0, j=S, x, y, nx, ny ; i<j ; i++){ x = que[i][0]; y = que[i][1]; // 先檢查往下 nx = x + 1; ny = y; if(nx < 0 || nx >= n || ny < 0 || ny >= m) continue; if(!vis[nx][ny] && arr[nx][ny] == '.'){ vis[nx][ny] = true; que[j][0] = nx; que[j][1] = ny; arr[nx][ny] = 'V'; j++; } // 是石頭就再檢查左右 elseif(!vis[nx][ny] && arr[nx][ny] == '#'){ for(int k=0 ; k<2 ; k++){ nx = x + dx[k]; ny = y + dy[k]; if(nx < 0 || nx >= n || ny < 0 || ny >= m) continue; if(!vis[nx][ny] && arr[nx][ny] == '.'){ vis[nx][ny] = true; que[j][0] = nx; que[j][1] = ny; arr[nx][ny] = 'V'; j++; } } } } }