Untitled
unknown
plain_text
2 years ago
2.0 kB
2
Indexable
package LuyenDe; import java.util.Scanner; import java.io.FileInputStream; import java.io.FileNotFoundException; public class Crossroads { public static int n; public static int[][] a; public static int[][] b; public static void updateA() { for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { if (a[i][j] != b[i][j]) { a[i][j] = b[i][j]; } } } } public static void main(String[] args) { try { System.setIn(new FileInputStream("crossroad")); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } Scanner scanner = new Scanner(System.in); int i, j, x, y; int T = scanner.nextInt(); for (int t = 1; t <= T; t++) { int year = 0; n = scanner.nextInt(); a = new int[n + 1][n + 1]; b = new int[n + 1][n + 1]; for (i = 1; i <= n; i++) { for (j = 1; j <= n; j++) { a[i][j] = scanner.nextInt(); b[i][j] = a[i][j]; } } boolean haveChange = true; while (haveChange) { haveChange = false; for (i = 2; i < n; i++) { for (j = 2; j < n; j++) { if (a[i][j] == 0 && (a[i + 1][j] + a[i - 1][j] + a[i][j - 1] + a[i][j + 1]) == 1) { haveChange = true; if (a[i + 1][j] == 1) { x = i; y = j; while (a[++x][y] == 1 && x <= n) b[x][y] = 0; } else if (a[i - 1][j] == 1) { x = i; y = j; while (a[--x][y] == 1 && x >= 1) b[x][y] = 0; } else if (a[i][j + 1] == 1) { x = i; y = j; while (a[i][++y] == 1 && y <= n) b[x][y] = 0; } else if (a[i][j - 1] == 1) { x = i; y = j; while (a[i][--y] == 1 && y >= 1) b[x][y] = 0; } } } } if (haveChange) { year++; updateA(); } } System.out.println(year); } } }
Editor is loading...