Untitled

 avatar
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...