area

复制代码
 1 #include<bits/stdc++.h>
 2 #define N 11
 3 using namespace std;
 4 int a[N][N];
 5 int vis[N][N];
 6 int dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}};
 7 int cnt=0;
 8 struct node{
 9     int x;
10     int y;
11 }q[200];
12 void bfs(int x0,int y0)
13 {
14     a[x0][y0]=1;
15     vis[x0][y0]=1;
16 
17     int head=1,tail=1;
18     q[tail].x=x0;
19     q[tail].y=y0;
20     tail++;
21     while(head<tail)
22     {
23         int x=q[head].x;
24         int y=q[head].y;
25         for(int i=0;i<4;i++)
26         {
27             int nx=x+dir[i][0];
28             int ny=y+dir[i][1];
29             if(1<=nx&&nx<=10&&1<=ny&&ny<=10&&a[nx][ny]==0&&vis[nx][ny]==0)
30             {
31                 vis[nx][ny]=1;
32                 a[nx][ny]=1;
33                 q[tail].x=nx;
34                 q[tail].y=ny;
35                 tail++;
36             }
37         }
38         head++;
39     }
40 }
41 void bfs_cnt(int x0,int y0)
42 {
43     vis[x0][y0]=1;
44     cnt++;
45     int head=1,tail=1;
46     q[tail].x=x0;
47     q[tail].y=y0;
48     tail++;
49     while(head<tail)
50     {
51         int x=q[head].x;
52         int y=q[head].y;
53         for(int i=0;i<4;i++)
54         {
55             int nx=x+dir[i][0];
56             int ny=y+dir[i][1];
57             if(1<=nx&&nx<=10&&1<=ny&&ny<=10&&a[nx][ny]==0&&vis[nx][ny]==0)
58             {
59                 vis[nx][ny]=1;
60                 q[tail].x=nx;
61                 q[tail].y=ny;
62                 tail++;
63                 cnt++;
64             }
65         }
66         head++;
67     }
68 }
69 int main()
70 {
71     for(int i=1;i<=10;i++)
72         for(int j=1;j<=10;j++)
73             cin>>a[i][j];
74     for(int j=1;j<=10;j++)
75         if(a[1][j]==0)
76             bfs(1,j);
77     for(int j=1;j<=10;j++)
78         if(a[10][j]==0)
79             bfs(10,j);
80     for(int i=1;i<=10;i++)
81         if(a[1][i]==0)
82             bfs(1,i);
83     for(int i=1;i<=10;i++)
84         if(a[10][i]==0)
85             bfs(10,i);
86     for(int i=1;i<=10;i++)
87         for(int j=1;j<=10;j++)
88             if(a[i][j]==0&&vis[i][j]==0)
89                 bfs_cnt(i,j);
90     cout<<cnt<<endl;
91     return 0;
92 }
复制代码

 

posted @   jetaim  阅读(155)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示