CodeForces 616C The Labyrinth
先预处理出所有连通块,对于每一个*,看他四周的连通块即可
- #include<cstdio>
- #include<cstring>
- #include<queue>
- #include<algorithm>
- using namespace std;
- const int maxn=+;
- char s[maxn][maxn];
- int Map[maxn][maxn];
- int n,m;
- int dir[][];
- int Belong[maxn*maxn];//每个点属于哪个联通快
- int tot[maxn*maxn];//每个联通快有几个点
- int Block;
- int TT;
- int tmp[];
- int RT[maxn*maxn];
- void DFS(int x,int y)
- {
- Map[x][y]=Block; TT++;
- for(int i=;i<;i++)
- {
- int NewX=x+dir[i][];
- int NewY=y+dir[i][];
- if(NewX>=&&NewX<=n-)
- if(NewY>=&&NewY<=m-)
- if(Map[NewX][NewY]==)
- DFS(NewX,NewY);
- }
- }
- int P(int x,int y)
- {
- if(x>=&&x<=n-)
- if(y>=&&y<=m-)
- return ;
- return ;
- }
- int main()
- {
- dir[][]=;dir[][]=;
- dir[][]=;dir[][]=;
- dir[][]=-;dir[][]=;
- dir[][]=;dir[][]=-;
- scanf("%d%d",&n,&m);
- memset(Map,,sizeof Map);
- for(int i=;i<n;i++) scanf("%s",s[i]);
- Block=;
- for(int i=;i<n;i++)
- for(int j=;j<m;j++)
- {
- if(s[i][j]=='*') Map[i][j]=-;
- else Map[i][j]=;
- }
- for(int i=;i<n;i++)
- for(int j=;j<m;j++)
- {
- if(Map[i][j]==)
- {
- TT=;
- DFS(i,j);
- tot[Block]=TT;
- Block++;
- }
- }
- for(int i=;i<n;i++)
- {
- for(int j=;j<m;j++)
- {
- if(s[i][j]=='*')
- {
- int ans=;
- int tmp[],xx=;
- if(P(i-,j)) tmp[xx++]=Map[i-][j];
- if(P(i+,j)) tmp[xx++]=Map[i+][j];
- if(P(i,j-)) tmp[xx++]=Map[i][j-];
- if(P(i,j+)) tmp[xx++]=Map[i][j+];
- for(int r=;r<xx;r++)
- {
- int fail=;
- for(int d=;d<r;d++) if(tmp[r]==tmp[d]) fail=;
- if(!fail) ans=ans+tot[tmp[r]];
- }
- ans++;
- ans=ans%;
- s[i][j]=ans+'';
- }
- }
- }
- for(int i=;i<n;i++) printf("%s\n",s[i]);
- return ;
- }
CodeForces 616C The Labyrinth的更多相关文章
- CodeForces - 616C(很有意思的bfs,set,map的使用)
传送门: http://codeforces.com/problemset/problem/616/C C. The Labyrinth time limit per test 1 second me ...
- [Codeforces Round #516][Codeforces 1063B/1064D. Labyrinth]
题目链接:1063B - Labyrinth/1064D - Labyrinth 题目大意:给定一个\(n\times m\)的图,有若干个点不能走,上下走无限制,向左和向右走的次数分别被限制为\(x ...
- Codeforces 1064 D - Labyrinth
D - Labyrinth 对于位置(i,j), j - c = R - L = const(常数), 其中R表示往右走了几步,L表示往左走了几步 所以R越大, L就越大, R越小, L就越小, 所以 ...
- Codeforces 1064D/1063B Labyrinth
原题链接/原题链接(代理站) 题目翻译 给你一个\(n*m\)的迷宫和起始点,有障碍的地方不能走,同时最多向左走\(x\)次,向右走\(y\)次,向上向下没有限制,问你有多少个格子是可以到达的. 输入 ...
- [ CodeForces 1063 B ] Labyrinth
\(\\\) \(Description\) 给出一个四联通的\(N\times M\) 网格图和起点.图中有一些位置是障碍物. 现在上下移动步数不限,向左至多走 \(a\) 步,向右至多走 \(b\ ...
- 【Codeforces 1063B】Labyrinth
[链接] 我是链接,点我呀:) [题意] 你可以往左最多x次,往右最多y次 问你从x,y出发最多能到达多少个格子 只能往上下左右四个方向走到没有障碍的格子 [题解] 假设我们从(r,c)出发想要到固定 ...
- Educational Codeforces Round 5
616A - Comparing Two Long Integers 20171121 直接暴力莽就好了...没什么好说的 #include<stdlib.h> #include&l ...
- CSU-ACM2018暑假集训6—BFS
可以吃饭啦!!! A:连通块 ZOJ 1709 Oil Deposits(dfs,连通块个数) B:素数变换 打表+bfs POJ 3216 Prime Path(打表+bfs) C:水bfs HDU ...
- 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 ...
随机推荐
- 【Holograms 101D】一步步用Unity 开发 Hologram
转载请注明出处: copperface:[Holograms 101D]一步步用Unity 开发 Hologram Holograms 101 该教程将带领你走完 Hologram 创建 的全过程.整 ...
- bmp文件格式详细解析
先区分几个概念:16色和16位色一样吗? 不一样! 颜色位数,即是用多少位字节表示的值,每一位可以表示0和1两值.通常图片的颜色深度,简称色深,就是用位数来表示的,所以,我通常会看到8位色,16位色, ...
- postfix防垃圾邮件
Postfix 2.x 打开/etc/postfix/main.cf文件,在其中增加如下的几行(如果相关的配置存在,就替换之): vi /etc/postfix/main.cf [...] smtpd ...
- 查看SQL Server 2008的版本及位数
如何查看SQL Server 2008的版本及位数及SP版本: 登录SQL Server,找到“SQL查询分析器”,输入“Select @@version”,运行,即可看出版本及SP版本. 该方法适用 ...
- Windows环境下google protobuf入门
我使用的是最新版本的protobuf(protobuf-2.6.1),编程工具使用VS2010.简单介绍下google protobuf: google protobuf 主要用于通讯,是google ...
- Java学习笔记之类和对象
1.类是对象的抽象,对象是类的实例. 2.一个.java 文件,只能有一个公有类. 3.Java的默认访问权限是:default,即不加任何访问修饰符,该权限设置只能在同一包访问. 当前类 同一包 ...
- Drawcli分析
当前环境:windows7 32位旗舰版.VS2010旗舰版 Drawcli介绍: Drawcli是VS2010中的一个示例程序,能够进行简单的绘图操作,例如线.矩形.圆角矩形.多边形等,位于VS安装 ...
- 安装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 ...
- UIWebView & javascript
http://blog.163.com/m_note/blog/static/208197045201293015844274/ UIWebView是IOS SDK中渲染网面的控件,在显示网页的时候, ...
- POJ 1236 Network of Schools(tarjan算法 + LCA)
这个题目网上有很多答案,代码也很像,不排除我的.大家的思路应该都是taijan求出割边,然后找两个点的LCA(最近公共祖先),这两个点和LCA以及其他点构成了一个环,我们判断这个环上的割边有几条,我们 ...