1233. 全球变暖
import java.util.Deque;
import java.util.LinkedList;
import java.util.Scanner;
public class Main{
static int n;
static final int N = 1010;
static char[][] g = new char[N][N];
static boolean[][] st = new boolean[N][N];
public static boolean bfs(int sx,int sy) {
Deque<int[]> dq = new LinkedList<>();
dq.addLast(new int[] {sx,sy});
st[sx][sy] = true;
int total = 0,bound = 0;
int[] dx = {1,-1,0,0};
int[] dy = {0,0,1,-1};
while(!dq.isEmpty()) {
int[] t = dq.pollFirst();
total++;
boolean is_bound = false;
for(int i=0;i<4;i++) {
int x = t[0]+dx[i],y = t[1]+dy[i];
if(x < 0 ||x > (n-1) || y < 0 || y > (n-1))
continue;
if(st[x][y])
continue;
if(g[x][y] == '.') {
is_bound = true;
continue;
}
dq.addLast(new int[] {x,y});
st[x][y] = true;
}
if(is_bound) bound++;
}
return total == bound;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
for(int i = 0;i < n;i++)
{
char[] charArray = sc.next().toCharArray();
for(int j = 0;j < n;j++)
{
g[i][j] = charArray[j];
}
}
int cnt = 0;
for(int i = 0;i < n;i++)
{
for(int j = 0;j < n;j++)
{
if(!st[i][j] && g[i][j] == '#')
{
if(bfs(i,j)) cnt ++;
}
}
}
System.out.println(cnt);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64