UVA 572 Oil Deposits

来源:互联网 发布:淘宝评分多久生效 编辑:程序博客网 时间:2024/06/08 17:53

DFS求连通块

#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>using namespace std;int m,n,idx[110][110];char pic[110][110];bool Isgood(int r, int c){    if(r < 0 || r >= m || c < 0 || c >= n)        return false;    return true;}void dfs(int r, int c, int id){    if(!Isgood(r,c))    return;    if(idx[r][c] || pic[r][c] != '@')   return;    idx[r][c] = 1;    for(int dr = -1; dr <= 1; dr++)        for(int dc = -1; dc<=1; dc++)            if(dc != 0 || dr != 0)  dfs(dr + r, dc + c, id);}int main(){//    freopen("in.txt", "r", stdin);    while(scanf("%d%d",&m,&n) == 2 && m){        for(int i=0; i<m; i++)            scanf("%s",pic[i]);        memset(idx, 0, sizeof(idx));        int cnt = 0;        for(int i=0; i<m; i++){            for(int j=0; j<n; j++){                if(!idx[i][j] && pic[i][j] == '@')  dfs(i,j,++cnt);            }        }        printf("%d\n",cnt);    }    return 0;}


0 0