// UVa 572 - Oil Deposits import java.util.Scanner; public class Main { static int m; static int n; static boolean[][] oil = new boolean[100][100]; public static void main(String[] args) { Scanner in = new Scanner(System.in); m = in.nextInt(); n = in.nextInt(); while (m != 0 && n != 0) { in.nextLine(); for (int i = 0; i < m; i++) { String line = in.nextLine(); for (int j = 0; j < line.length(); j++) oil[i][j] = line.charAt(j) == '@'; } int sol = 0; for (int i = 0; i < m; i++) for (int j = 0; j < n; j++) if (oil[i][j]) { sol++; dfs(i, j); } System.out.println(sol); m = in.nextInt(); n = in.nextInt(); } } public static void dfs(int a, int b) { oil[a][b] = false; if (a > 0 && oil[a - 1][b]) dfs(a - 1, b); if (b > 0 && oil[a][b - 1]) dfs(a, b - 1); if (a < m - 1 && oil[a + 1][b]) dfs(a + 1, b); if (b < n - 1 && oil[a][b + 1]) dfs(a, b + 1); if (a > 0 && b > 0 && oil[a - 1][b - 1]) dfs(a - 1, b - 1); if (a > 0 && b < n - 1 && oil[a - 1][b + 1]) dfs(a - 1, b + 1); if (a < m - 1 && b > 0 && oil[a + 1][b - 1]) dfs(a + 1, b - 1); if (a < m - 1 && b < n - 1 && oil[a + 1][b + 1]) dfs(a + 1, b + 1); } }
Wednesday, June 10, 2015
UVa 572 - Oil Deposits
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment