HDOJ1312 DFS
2016-06-10 21:23
211 查看
求一个连通块的元素个数(包含@的连通块)
#include <iostream>
#include"sstream"
#include"string"
#include"algorithm"
#include"cstring"
#include"cstdio"
using namespace std;
int dir[4][2]={1,0,-1,0,0,1,0,-1};
char g[30][30];
int r,c;
int cnd;
int visit[30][30];
void dfs(int si,int sj)
{
for(int i=0;i<4;i++)
{
int ki=si+dir[i][0];
int kj=sj+dir[i][1];
if((ki<r&&ki>=0&&kj<c&&kj>=0)&&(g[ki][kj]=='.'||g[ki][kj]=='@')&&!visit[ki][kj])
{
++cnd;
visit[ki][kj]=1;
dfs(ki,kj);
}
}
}
int main()
{
// freopen("a.txt","r",stdin);
while(cin>>c>>r&&(r+c))
{
memset(visit,0,sizeof(visit));
int si,sj;
int i,j;
cnd=0;
for(i=0;i<r;i++)
for(j=0;j<c;j++)
{
cin>>g[i][j];
if(g[i][j]=='@')
{sj=j;si=i;}
}
++cnd;
visit[si][sj]=1;
dfs(si,sj);
cout<<cnd<<endl;
}
return 0;
}
#include <iostream>
#include"sstream"
#include"string"
#include"algorithm"
#include"cstring"
#include"cstdio"
using namespace std;
int dir[4][2]={1,0,-1,0,0,1,0,-1};
char g[30][30];
int r,c;
int cnd;
int visit[30][30];
void dfs(int si,int sj)
{
for(int i=0;i<4;i++)
{
int ki=si+dir[i][0];
int kj=sj+dir[i][1];
if((ki<r&&ki>=0&&kj<c&&kj>=0)&&(g[ki][kj]=='.'||g[ki][kj]=='@')&&!visit[ki][kj])
{
++cnd;
visit[ki][kj]=1;
dfs(ki,kj);
}
}
}
int main()
{
// freopen("a.txt","r",stdin);
while(cin>>c>>r&&(r+c))
{
memset(visit,0,sizeof(visit));
int si,sj;
int i,j;
cnd=0;
for(i=0;i<r;i++)
for(j=0;j<c;j++)
{
cin>>g[i][j];
if(g[i][j]=='@')
{sj=j;si=i;}
}
++cnd;
visit[si][sj]=1;
dfs(si,sj);
cout<<cnd<<endl;
}
return 0;
}
相关文章推荐
- 多云 25℃ 6.10日
- nginx负载均衡简单配置
- GUI_POINT的坐标
- Qt技巧:Win7下打包发布Qt程序(解释的比较清楚,把exe和dll伪装合并成一个文件)
- Google类VR设备知识
- 团队冲刺(二)个人工作总结8
- 阿里服务器CentOS安装docker错误解决
- i5+GT730+B85安装OSX10.10.5 (Yosemite Install(14F27).cdr)
- CSS动画效果
- 一份不太简短的LaTeX教程 lshort – A short introduction to LATEX 2elshort – A short introduction to LATEX 2e
- BZOJ 3124: [Sdoi2013]直径 (随便写写就好了)
- 面试:哈希:最长不同字符子串
- mysql带 OR 的多条件查询
- 打印空心菱形
- Android App卡顿慢优化之解决内存抖动及内存泄漏
- 流弊博客集锦(updating)
- Codevs 2547 东方辉针城
- Call AllocateUserPhysicalPages gets1314 or AdjustTokenPrivileges with SE_LOCK_MEMORY_NAME gets 1300
- 使用笔记本作无线热点
- 如常生活