uva 572 Oil Deposits

来源:互联网 发布:网络理财投资 编辑:程序博客网 时间:2024/06/07 17:57

种子填充

/* ***********************************************Author        :xryzEmail         :523689985@qq.comCreated Time  :4-13 20:55:27File Name     :\Users\xryz\Desktop\OilDeposits.cpp************************************************ *///种子填充#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>#include <vector>#include <queue>#include <set>#include <map>#include <string>#include <math.h>#include <stdlib.h>#include <time.h>using namespace std;int n,m,u[120][120];char mp[120][120];int dx[8]={0,0,-1,1,-1,-1,1,1,};int dy[8]={1,-1,0,0,1,-1,1,-1};void dfs(int x1,int y1,int cnt){    int i,x,y;    if(x1<0||y1<0||x1>n||y1>m||mp[x1][y1]!='@'||u[x1][y1]>0) return ;    u[x1][y1]=cnt;    for(i=0;i<8;i++)    {        x=dx[i]+x1;        y=dy[i]+y1;        dfs(x,y,cnt);    }}int main(){    int i,j,cnt;    while(~scanf("%d%d",&n,&m))    {        if(n==0&&m==0) break;        for(i=0;i<n;i++)                scanf("%s",mp[i]);        memset(u,0,sizeof(u));        cnt=0;        for(i=0;i<n;i++)            for(j=0;j<m;j++)            {                if(mp[i][j]=='@'&&u[i][j]==0)                 {                cnt+=1;                dfs(i,j,cnt);            }            }        printf("%d\n",cnt);    }    return 0;}
0 0
原创粉丝点击