コード
import java.util.ArrayList;
public class OddEvenTree {
public int[] getTree(String[] x) {
int N = x.length;
int[] nt = { -1 };
boolean o = false;
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
if (i == j && x[i].charAt(j) != 'E') {
return nt;
}
if (x[i].charAt(j) != x[j].charAt(i)) {
return nt;
}
if (x[0].charAt(i) == x[0].charAt(j)) {
if (x[i].charAt(j) != 'E') {
return nt;
}
} else {
if (x[i].charAt(j) != 'O') {
return nt;
}
}
if (x[i].charAt(j) == 'O') {
o = true;
}
}
}
if (!o) {
return nt;
}
boolean[] used = new boolean[N];
used[0] = true;
ArrayList<Integer> ans = new ArrayList<>();
for (int i = 0; i < used.length; i++) {
if (!used[i] && x[0].charAt(i) == 'O') {
ans.add(0);
ans.add(i);
used[i] = true;
}
}
for (int i = 1; i < used.length; i++) {
if (!used[i]) {
continue;
}
for (int j = 0; j < used.length; j++) {
if (!used[j]) {
ans.add(i);
ans.add(j);
used[j] = true;
}
}
}
int[] ret = new int[ans.size()];
for (int i = 0; i < ret.length; i++) {
ret[i] = ans.get(i);
}
return ret;
}
}