蓝桥杯(3.11)

时间:2024-03-12 11:38:28
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); } }