#include #include #include #include #include #include #include #include #include #include using namespace std; int ap[30][30], a[30][30], N; char sir[30]; void dfs (int i, int j, int ap_cul, int cul) { if (a[i][j] != cul) return ; if (ap[i][j]) return ; ap[i][j] = ap_cul; dfs (i + 1, j, ap_cul, cul); dfs (i - 1, j, ap_cul, cul); dfs (i, j + 1, ap_cul, cul); dfs (i, j - 1, ap_cul, cul); } int vol (int ap_cul) { int v = 0; for (int i=1; i<=N; i++) for (int j=1; j<=N; j++) if (ap[i][j] != ap_cul && ap[i][j] != 1) { if (ap[i-1][j] == ap_cul || ap[i+1][j] == ap_cul || ap[i][j+1] == ap_cul || ap[i][j-1] == ap_cul || ap[i-1][j] == 1 || ap[i+1][j] == 1 || ap[i][j+1] == 1 || ap[i][j-1] == 1) v ++; } for (int i=1; i<=N; i++) for (int j=1; j<=N; j++) if (ap[i][j] == ap_cul) v += 3; return v; } bool finished () { for (int i=1; i<=N; i++) for (int j=1; j<=N; j++) if (a[i][j] != a[1][1]) return 0; return 1; } int main() { //freopen ("input", "r", stdin); //freopen ("output", "w", stdout); N = 14; for (int i=1; i<=N; i++) { gets (sir + 1); for (int j=1; j<=N; j++) a[i][j] = sir[j] - '0'; } for (int i=0; i<=N + 1; i++) for (int j=0; j<=N + 1; j++) if (i == 0 || j == 0 || i == N + 1 || j == N + 1) a[i][j] = -1; while (1) { if (finished ()) break; for (int i=1; i<=N; i++) for (int j=1; j<=N; j++) ap[i][j] = 0; int nr_cul = 1, best = 0, how; dfs (1, 1, 1, a[1][1]); for (int C = 0; C < 6; C ++) if (C != a[1][1]) { ++nr_cul; for (int i=1; i<=N; i++) for (int j=1; j<=N; j++) if (ap[i][j] == 0 && a[i][j] == C && (ap[i-1][j] == 1 || ap[i][j-1] == 1 || ap[i+1][j] == 1 || ap[i][j+1] == 1)) dfs (i, j, nr_cul, C); int succes = vol (nr_cul); if (succes > best) best = succes, how = C; } printf ("%d ", how); for (int i=1; i<=N; i++) for (int j=1; j<=N; j++) if (ap[i][j] == 1) a[i][j] = how; /* for (int i=1; i<=N; i++, printf ("\n")) for (int j=1; j<=N; j++) printf ("%d", ap[i][j]); printf ("\n\n");*/ } return 0; }