Untitled
unknown
plain_text
2 years ago
2.0 kB
4
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...