先预处理出所有连通块,对于每一个*,看他四周的连通块即可

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<queue>
  4. #include<algorithm>
  5. using namespace std;
  6.  
  7. const int maxn=+;
  8. char s[maxn][maxn];
  9. int Map[maxn][maxn];
  10. int n,m;
  11. int dir[][];
  12. int Belong[maxn*maxn];//每个点属于哪个联通快
  13. int tot[maxn*maxn];//每个联通快有几个点
  14. int Block;
  15. int TT;
  16. int tmp[];
  17. int RT[maxn*maxn];
  18.  
  19. void DFS(int x,int y)
  20. {
  21. Map[x][y]=Block; TT++;
  22. for(int i=;i<;i++)
  23. {
  24. int NewX=x+dir[i][];
  25. int NewY=y+dir[i][];
  26. if(NewX>=&&NewX<=n-)
  27. if(NewY>=&&NewY<=m-)
  28. if(Map[NewX][NewY]==)
  29. DFS(NewX,NewY);
  30. }
  31. }
  32.  
  33. int P(int x,int y)
  34. {
  35. if(x>=&&x<=n-)
  36. if(y>=&&y<=m-)
  37. return ;
  38. return ;
  39. }
  40.  
  41. int main()
  42. {
  43. dir[][]=;dir[][]=;
  44. dir[][]=;dir[][]=;
  45. dir[][]=-;dir[][]=;
  46. dir[][]=;dir[][]=-;
  47.  
  48. scanf("%d%d",&n,&m);
  49. memset(Map,,sizeof Map);
  50. for(int i=;i<n;i++) scanf("%s",s[i]);
  51. Block=;
  52. for(int i=;i<n;i++)
  53. for(int j=;j<m;j++)
  54. {
  55. if(s[i][j]=='*') Map[i][j]=-;
  56. else Map[i][j]=;
  57. }
  58.  
  59. for(int i=;i<n;i++)
  60. for(int j=;j<m;j++)
  61. {
  62. if(Map[i][j]==)
  63. {
  64. TT=;
  65. DFS(i,j);
  66. tot[Block]=TT;
  67. Block++;
  68. }
  69. }
  70.  
  71. for(int i=;i<n;i++)
  72. {
  73. for(int j=;j<m;j++)
  74. {
  75. if(s[i][j]=='*')
  76. {
  77. int ans=;
  78. int tmp[],xx=;
  79. if(P(i-,j)) tmp[xx++]=Map[i-][j];
  80. if(P(i+,j)) tmp[xx++]=Map[i+][j];
  81. if(P(i,j-)) tmp[xx++]=Map[i][j-];
  82. if(P(i,j+)) tmp[xx++]=Map[i][j+];
  83. for(int r=;r<xx;r++)
  84. {
  85. int fail=;
  86. for(int d=;d<r;d++) if(tmp[r]==tmp[d]) fail=;
  87. if(!fail) ans=ans+tot[tmp[r]];
  88. }
  89. ans++;
  90. ans=ans%;
  91. s[i][j]=ans+'';
  92. }
  93. }
  94. }
  95.  
  96. for(int i=;i<n;i++) printf("%s\n",s[i]);
  97. return ;
  98. }

CodeForces 616C The Labyrinth的更多相关文章

  1. CodeForces - 616C(很有意思的bfs,set,map的使用)

    传送门: http://codeforces.com/problemset/problem/616/C C. The Labyrinth time limit per test 1 second me ...

  2. [Codeforces Round #516][Codeforces 1063B/1064D. Labyrinth]

    题目链接:1063B - Labyrinth/1064D - Labyrinth 题目大意:给定一个\(n\times m\)的图,有若干个点不能走,上下走无限制,向左和向右走的次数分别被限制为\(x ...

  3. Codeforces 1064 D - Labyrinth

    D - Labyrinth 对于位置(i,j), j - c = R - L = const(常数), 其中R表示往右走了几步,L表示往左走了几步 所以R越大, L就越大, R越小, L就越小, 所以 ...

  4. Codeforces 1064D/1063B Labyrinth

    原题链接/原题链接(代理站) 题目翻译 给你一个\(n*m\)的迷宫和起始点,有障碍的地方不能走,同时最多向左走\(x\)次,向右走\(y\)次,向上向下没有限制,问你有多少个格子是可以到达的. 输入 ...

  5. [ CodeForces 1063 B ] Labyrinth

    \(\\\) \(Description\) 给出一个四联通的\(N\times M\) 网格图和起点.图中有一些位置是障碍物. 现在上下移动步数不限,向左至多走 \(a\) 步,向右至多走 \(b\ ...

  6. 【Codeforces 1063B】Labyrinth

    [链接] 我是链接,点我呀:) [题意] 你可以往左最多x次,往右最多y次 问你从x,y出发最多能到达多少个格子 只能往上下左右四个方向走到没有障碍的格子 [题解] 假设我们从(r,c)出发想要到固定 ...

  7. Educational Codeforces Round 5

    616A - Comparing Two Long Integers    20171121 直接暴力莽就好了...没什么好说的 #include<stdlib.h> #include&l ...

  8. CSU-ACM2018暑假集训6—BFS

    可以吃饭啦!!! A:连通块 ZOJ 1709 Oil Deposits(dfs,连通块个数) B:素数变换 打表+bfs POJ 3216 Prime Path(打表+bfs) C:水bfs HDU ...

  9. Codeforces Educational Codeforces Round 5 C. The Labyrinth 带权并查集

    C. The Labyrinth 题目连接: http://www.codeforces.com/contest/616/problem/C Description You are given a r ...

随机推荐

  1. 【Holograms 101D】一步步用Unity 开发 Hologram

    转载请注明出处: copperface:[Holograms 101D]一步步用Unity 开发 Hologram Holograms 101 该教程将带领你走完 Hologram 创建 的全过程.整 ...

  2. bmp文件格式详细解析

    先区分几个概念:16色和16位色一样吗? 不一样! 颜色位数,即是用多少位字节表示的值,每一位可以表示0和1两值.通常图片的颜色深度,简称色深,就是用位数来表示的,所以,我通常会看到8位色,16位色, ...

  3. postfix防垃圾邮件

    Postfix 2.x 打开/etc/postfix/main.cf文件,在其中增加如下的几行(如果相关的配置存在,就替换之): vi /etc/postfix/main.cf [...] smtpd ...

  4. 查看SQL Server 2008的版本及位数

    如何查看SQL Server 2008的版本及位数及SP版本: 登录SQL Server,找到“SQL查询分析器”,输入“Select @@version”,运行,即可看出版本及SP版本. 该方法适用 ...

  5. Windows环境下google protobuf入门

    我使用的是最新版本的protobuf(protobuf-2.6.1),编程工具使用VS2010.简单介绍下google protobuf: google protobuf 主要用于通讯,是google ...

  6. Java学习笔记之类和对象

    1.类是对象的抽象,对象是类的实例. 2.一个.java 文件,只能有一个公有类. 3.Java的默认访问权限是:default,即不加任何访问修饰符,该权限设置只能在同一包访问.   当前类 同一包 ...

  7. Drawcli分析

    当前环境:windows7 32位旗舰版.VS2010旗舰版 Drawcli介绍: Drawcli是VS2010中的一个示例程序,能够进行简单的绘图操作,例如线.矩形.圆角矩形.多边形等,位于VS安装 ...

  8. 安装mysql ,从 mysql-5.5.5 开始innodb作为默认的存储引擎了

    [root@Linux opt]# tar -xvf MySQL-5.6.16-1.rhel5.x86_64.rpm-bundle.tar MySQL-shared-compat-5.6.16-1.r ...

  9. UIWebView & javascript

    http://blog.163.com/m_note/blog/static/208197045201293015844274/ UIWebView是IOS SDK中渲染网面的控件,在显示网页的时候, ...

  10. POJ 1236 Network of Schools(tarjan算法 + LCA)

    这个题目网上有很多答案,代码也很像,不排除我的.大家的思路应该都是taijan求出割边,然后找两个点的LCA(最近公共祖先),这两个点和LCA以及其他点构成了一个环,我们判断这个环上的割边有几条,我们 ...