题意:

就是给你一个n行m列的矩形,后面将会有q次操作,每次操作会输入x,y表示要击碎第x行第y列的石块,当击碎它之后还去判断一下周围石块是否牢固

如果一个石块的左右两边至少一个已经被击碎且上下也至少一个被击碎,那么这个石块就是不牢固的,可以把这个石块也击碎

对于每一对x,y;要输出一个整数表示此次操作击碎石块多少个

题解:

对于每输入的一对x,y;先判断这个点的石块还在不在了,不在就输出0,在的话标记一下,在以此处为起点开始bfs搜索,搜索过程中经过的点也要标记

再按照石块是否牢固的判断方法对搜索过程中的石块进行判断

代码:

 1 #include<stdio.h>
2 #include<string.h>
3 #include<iostream>
4 #include<algorithm>
5 #include<vector>
6 #include<queue>
7 using namespace std;
8 const int INF=0x3f3f3f3f;
9 const int maxn=2505;
10 typedef long long ll;
11 struct shudui
12 {
13 int x,y;
14 } str1,str2;
15 int p[4][2]= {{1,0},{0,1},{-1,0},{0,-1}};
16 int n,m,w[maxn][maxn],xx[maxn],yy[maxn];
17 queue<shudui>r;
18 bool panduan(int y,int x)
19 {
20 int flag=0;
21 if(yy[y])
22 {
23 if(xx[x])
24 return 0;
25 else return 1;
26 }
27 else return 1;
28 }
29 int bfs(int ans)
30 {
31 while(!r.empty())
32 {
33 str1=r.front();
34 r.pop();
35 for(int i=0; i<4; ++i)
36 {
37 int x=str2.x=str1.x+p[i][0];
38 int y=str2.y=str1.y+p[i][1];
39 if(x<1 || y<1 || x>m || y>n || w[y][x])
40 {
41 continue;
42 }
43 if((w[y-1][x] || w[y+1][x]) && (w[y][x+1] || w[y][x-1]))
44 {
45 ans++;
46 w[y][x]=1;
47 r.push(str2);
48 }
49 }
50 }
51 return ans;
52 }
53 int v[maxn];
54 int main()
55 {
56 int t;
57 scanf("%d",&t);
58 while(t--)
59 {
60 int q;
61 memset(yy,0,sizeof(yy));
62 memset(xx,0,sizeof(xx));
63 memset(w,0,sizeof(w));
64 while(!r.empty()) r.pop();
65 scanf("%d%d%d",&n,&m,&q);
66 for(int j=1; j<=q; ++j)
67 {
68 int x,y;
69 scanf("%d%d",&y,&x);
70 int ans=0;
71 if(!w[y][x])
72 {
73 str2.x=x;
74 str2.y=y;
75 r.push(str2);
76 w[y][x]=1;
77 ans=bfs(1);
78 }
79 printf("%d\n",ans);
80 }
81 }
82 return 0;
83 }

最新文章

  1. 联合体union和大小端(big-endian、little-endian)
  2. .net 读取Excel文件报错
  3. UiAutomator自动化测试框架介绍
  4. window常用命令(持续更新)
  5. RedHat7上安装PHP
  6. im命令合集
  7. ASP.NET MVC 项目分离
  8. Protel 99SE铺铜问题总结
  9. jssdk微信图片上传功能
  10. 【LaTeX排版】LaTeX论文排版&amp;lt;三&amp;gt;
  11. python之smtplib发邮件
  12. JS string 常用方法总结
  13. BZOJ 5104
  14. 关于react的分页
  15. 2018.11.10 FCC java分享大会
  16. 解决在jupyter notebook中遇到的ImportError: matplotlib is required for plotting问题
  17. loj#2016. 「SCOI2016」美味
  18. Dubbo的学习
  19. 「BZOJ」「3262」陌上花开
  20. JSP弹出对话框方式小结

热门文章

  1. python3实现计算器
  2. Rabbitmq可靠消息投递,消息确认机制
  3. MySQL 使用MD5对数据进行加密
  4. Java调用Linux命令执行
  5. LeetCode700. 二叉搜索树中的搜索
  6. 全网最全!彻底弄透Java处理GMT/UTC日期时间
  7. 24V转5V稳压芯片,高效率的同步降压DC-DC变换器3A输出电流
  8. NOIP2020 T2 字符串匹配题解
  9. java虚拟机入门(二)-探索内存世界
  10. ovs-vsctl命令