hdu1241——Oil Deposits(广搜的简单应用)
2010-08-31 14:00
253 查看
这道题,求的是油矿!关键是有相邻的话,要归并为一个油矿!对此,我们对每个点进行遍历,如果这个点还没进行过bfs,且它是一个油矿,那么,对其标记为已经bfs,并对其为起点bfs,遍历过的且为油矿的点,标记为已bfs。其中,设置一个计数,用来记录有多少个点进行过bfs,即为题目所求!
#include<stdio.h> #include<string.h> #define max 105 char g[max][max]; int n,m,used[max][max]; int dir[][2]={{-1,0},{1,0},{0,-1},{0,1},{-1,-1},{-1,1},{1,-1},{1,1}}; struct node { int x,y; }; struct node queue[max*max],position,temp; void bfs(int sx,int sy) { int i,j,front=0,rear=0; rear++; queue[rear].x=sx;queue[rear].y=sy; while(front!=rear) { front++; position.x=queue[front].x;position.y=queue[front].y; for(i=0;i<8;i++) { temp.x=position.x+dir[i][0]; temp.y=position.y+dir[i][1]; if(temp.x>=0&&temp.y>=0&&temp.x<n&&temp.y<m&&used[temp.x][temp.y]==0&&g[temp.x][temp.y]!='*') { rear++; queue[rear].x=temp.x;queue[rear].y=temp.y; used[temp.x][temp.y]=1; } } } } main() { int i,j,num; while(scanf("%d%d",&n,&m)&&n&&m) { num=0; memset(used,0,sizeof(used)); for(i=0;i<n;i++) { scanf("%s",&g[i]); } for(i=0;i<n;i++) for(j=0;j<m;j++) if(g[i][j]=='@'&&used[i][j]==0) { num++; bfs(i,j); } printf("%d/n",num); } }
相关文章推荐
- HDU 1241 Oil Deposits【简单DPS搜索】
- hdu 1241 Oil Deposits 简单dfs
- hdu 题目1241 Oil Deposits(简单DFS)
- hdu 1241 Oil Deposits 简单八个方向的DFS
- hdu 1241 Oil Deposits(简单深搜)
- HDU 1241 Oil Deposits ([kuangbin带你飞]专题一 简单搜索)
- [kuangbin带你飞]专题一 简单搜索L - Oil Deposits(HDU 1241)
- hdu 1848 Fibonacci again and again(sg函数的简单应用 模板题 )
- HDU-1241- Oil Deposits (搜索)
- 【HDU】4135 Co-prime(容斥原理简单应用 质因子的分解)
- HDU 1870 愚人节的礼物(栈的简单应用)
- HDU 1241 Oil Deposits
- hdu-1247 简单map的应用。(字典树)
- HDU 1556 Color the ball (树状数组简单应用)
- HDU 1241 Oil Deposits
- HDU 1850 Being a Good Boy in Spring Festival(简单 尼姆博弈应用)
- HDU 1022 Train Problem I(栈的简单应用)
- hdu 2648(map简单应用)
- hdu-1022 Train Problem I (栈的简单应用)
- Oil Deposits 石油储藏HDU - 1241 BFS