POJ2386 Lake Counting(DFS)
2014-09-29 22:46
411 查看
从任意的W开始,不停地把邻接的部分用'.'代替。1次DFS后与初始的这个W连接的所有W就都被替换成了'.',因此直到图中不再存在W为止,总共进行DFS的次数就是答案了。8个方向共对应了8种状态转移,每个格子作为DFS的参数至多被调用一次,所以复杂度为O(8×N×M)=O(N×M)。
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; char map[110][110]; int dis[8][2]={{0,1},{1,0},{-1,0},{0,-1},{1,1},{-1,-1},{-1,1},{1,-1}}; int n,m; void dfs(int x,int y) { map[x][y]='.'; for(int i=0;i<8;i++) { int xx=x+dis[i][0]; int yy=y+dis[i][1]; if(xx<0||xx>=n||yy<0||yy>=m) continue; if(map[xx][yy]=='W') { dfs(xx,yy); } } return; } int main() { //freopen("d:\\test.txt","r",stdin); while(cin>>n>>m) { for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { cin>>map[i][j]; } } int ans=0; for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { if(map[i][j]=='.') continue; dfs(i,j); ans++; } } cout<<ans<<endl; } return 0; }
相关文章推荐
- POJ 2386 Lake Counting(dfs)
- poj 2386 Lake Counting 深搜DFS
- poj 2386:Lake Counting(简单DFS深搜)
- POJ 2386 Lake Counting(水淹菜地,DFS,八连通,连通分量)
- POJ 2386 Lake Counting(DFS)
- POJ 2386 Lake Counting(经典dfs)
- POJ 2386 Lake Counting (DFS)
- DFS 之 poj 2386 Lake Counting
- POJ - 2386 Lake Counting (DFS)
- POJ-2386--Lake Counting---DFS(深搜)
- poj 2386 Lake Counting 【dfs(模板)】
- DFS 之 poj 2386 Lake Counting
- POJ 2386 Lake Counting (DFS or BFS)
- POJ 2386 Lake Counting(DFS:求8连通分量的个数)
- POJ:2386 Lake Counting(dfs)
- POJ 2386 Lake Counting(DFS)
- poj 2386 Lake Counting(DFS 杂这么多这种类型的水题啊。。。。)
- 【DFS】POJ 2386 Lake Counting
- POJ 2386 Lake Counting(DFS)
- 寒假集训三, Lake Counting ,DFS POJ-2386