{"trustable":false,"prependHtml":"\u003cscript\u003e window.katexOptions \u003d { disable: true }; \u003c/script\u003e\n\u003cscript type\u003d\"text/x-mathjax-config\"\u003e\n MathJax.Hub.Config({\n tex2jax: {\n inlineMath: [[\u0027$$$\u0027,\u0027$$$\u0027], [\u0027$\u0027,\u0027$\u0027]],\n displayMath: [[\u0027$$$$$$\u0027,\u0027$$$$$$\u0027], [\u0027$$\u0027,\u0027$$\u0027]]\n }\n });\n\u003c/script\u003e\n\u003cscript async src\u003d\"https://mathjax.codeforces.org/MathJax.js?config\u003dTeX-AMS-MML_HTMLorMML\" type\u003d\"text/javascript\"\u003e\u003c/script\u003e","sections":[{"title":"背景描述","value":{"format":"MD","content":"\u003cp\u003e \u003cspan\u003e\u003cspan\u003e\u003cspan\u003eztw 同志负责探测地下石油储藏。\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e ztw现在在一块矩形区域探测石油。他通过专业设备,来分析每个小块中是否蕴藏石油。如果这些蕴藏石油的小方格相邻(横向相邻,纵向相邻,还有对角相邻),那么它们被认为是同一油藏的一部分。在这块矩形区域,可能有很多油藏。你的任务是确定有多少不同的油藏。\u003c/p\u003e"}},{"title":"输入","value":{"format":"MD","content":"\u003cp\u003e 输入可能有多个矩形区域(即可能有多组测试)。每个矩形区域的起始行包含 n 和 m,表示行和列的数量,1\u0026lt;\u003dn,m\u0026lt;\u003d\u003cspan\u003e\u003cspan\u003e\u003cspan\u003e100,如果 m\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e \u003d0 表示输入的结束,接下来是n行,每行m个字符。每个字符对应一个小方格,并且要么是 \u0027*\u0027\u003cspan\u003e\u003cspan\u003e\u003cspan\u003e,代表没有油,要么是 \u0027@\u0027,表示有油。(注意多组数据,必要的数组要及时清空~)\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/p\u003e"}},{"title":"输出","value":{"format":"MD","content":"\u003cp\u003e 对于每一个矩形区域,输出油藏的数量。两个小方格是相邻的,当且仅当他们水平或者垂直或者对角线相邻(即8个方向)。\u003c/p\u003e"}},{"title":"示例输入","value":{"format":"MD","content":"\u003cdiv\u003e \n \u003cdiv\u003e\n \u0026nbsp;\n \u003c/div\u003e \n \u003cdiv\u003e \n \u003cdiv\u003e\n 1 1\n \u003c/div\u003e \n \u003c/div\u003e \n \u003cdiv\u003e\n *\n \u003c/div\u003e \n \u003cdiv\u003e\n 3 5\n \u003c/div\u003e \n \u003cdiv\u003e\n *@*@*\n \u003c/div\u003e \n \u003cdiv\u003e\n **@**\n \u003c/div\u003e \n \u003cdiv\u003e\n *@*@*\n \u003c/div\u003e \n \u003cdiv\u003e\n 1 8\n \u003c/div\u003e \n \u003cdiv\u003e\n @@****@*\n \u003c/div\u003e \n \u003cdiv\u003e\n 5 5\u0026nbsp;\n \u003c/div\u003e \n \u003cdiv\u003e\n ****@\n \u003c/div\u003e \n \u003cdiv\u003e\n *@@*@\n \u003c/div\u003e \n \u003cdiv\u003e\n *@**@\n \u003c/div\u003e \n \u003cdiv\u003e\n @@@*@\n \u003c/div\u003e \n \u003cdiv\u003e\n @@**@\n \u003c/div\u003e \n \u003cdiv\u003e\n 0 0\u0026nbsp;\n \u003c/div\u003e \n \u003cdiv\u003e\n \u0026nbsp;\n \u003c/div\u003e \n\u003c/div\u003e"}},{"title":"示例输出","value":{"format":"MD","content":"\u003cpre\u003e\n\u003c/pre\u003e \n\u003cdiv\u003e \n \u003cdiv\u003e\n 0\n \u003c/div\u003e \n\u003c/div\u003e \n\u003cdiv\u003e\n 1\n\u003c/div\u003e \n\u003cdiv\u003e\n 2\n\u003c/div\u003e \n\u003cdiv\u003e\n 2\n\u003c/div\u003e"}},{"title":"Hint","value":{"format":"MD","content":"多组输入参考:\n\n\u003cpre\u003e\nwhile(scanf(\"%d %d\", \u0026n, \u0026m)) {\n if(m \u003d\u003d 0) break;\n 在里面写代码;请注意清空 (必要的数组或变量);\n}\n\u003c/pre\u003e"}}]}