1 #include <cstring>
2 #include <cstdio>
3
4 char s[5][5];
5 int ans,tot,cnt,map[5][5];
6
7 bool vis[5][5];
8 int sx,fx[4]={0,1,0,-1};
9 int sy,fy[4]={1,0,-1,0};
10
11 void Traversal(int x,int y)
12 {
13 ++tot;vis[x][y]=1;
14 for(int xx,yy,i=0; i<4; ++i)
15 {
16 xx=x+fx[i]; yy=y+fy[i];
17 if(!vis[xx][yy]&&xx>=0&&xx<5&&yy>=0&&yy<5&&map[xx][yy])
18 Traversal(xx,yy);
19 }
20 }
21
22 bool DFS(int x,int y,int now)
23 {
24 if(!now)
25 {
26 tot=0;
27 memset(vis,0,sizeof(vis));
28 Traversal(sx,sy);
29 return (ans+cnt)==tot;
30 }
31 for(int yy=y+1; yy<5; ++yy)
32 {
33 if(map[x][yy]) continue;
34 map[x][yy]=1;
35 if(DFS(x,yy,now-1)) return 1;
36 map[x][yy]=0;
37 }
38 for(int xx=x+1; xx<5; ++xx)
39 for(int yy=0; yy<5; ++yy)
40 {
41 if(map[xx][yy]) continue;
42 map[xx][yy]=1;
43 if(DFS(xx,yy,now-1)) return 1;
44 map[xx][yy]=0;
45 }
46 return 0;
47 }
48
49 int Presist()
50 {
51 for(int i=0; i<5; ++i)
52 scanf("%s",s[i]);
53 for(int i=0; i<5; ++i)
54 for(int j=0; j<5; ++j)
55 {
56 map[i][j]=s[i][j]-‘0‘;
57 if(map[i][j]) cnt++,sx=i,sy=j;
58 }
59 for(; !DFS(0,0,ans); ) ans++;
60 printf("%d\n",ans);
61 return 0;
62 }
63
64 int Aptal=Presist();
65 int main(){;}