Lang:Java
Edit12345678910111213141516171819202122232425262728293031import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt(), m = sc.nextInt();char[][] matrix = new char[n][m];for (int i = 0; i < n; i++) {sc.nextLine();char[] row = new char[m];for (int j = 0; j < m; j++) {row[j] = sc.findInLine(".").charAt(0);}matrix[i] = row;}System.out.println(solve(matrix));}private static int solve(char[][] matrix) {int n = matrix.length, m = matrix[0].length, n1 = n + 1, m1 = m + 1;UF uf = new UF(n1 * m + n * m1);int base = n1 * m;for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {if (matrix[i][j] == '/') {uf.union(encode(i, j, m, 0), encode(i, j, m1, base));uf.union(encode(i + 1, j, m, 0), encode(i, j + 1, m1, base));}if (matrix[i][j] == '\\') {uf.union(encode(i, j, m, 0), encode(i, j + 1, m1, base));uf.union(encode(i + 1, j, m, 0), encode(i, j, m1, base));