UVA 572 BFS 图论入门

Posted 柳暗花明_liu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UVA 572 BFS 图论入门相关的知识,希望对你有一定的参考价值。

题干略。

注意八连块的遍历方式,秒得很:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define maxn 100+10
#define inf 100000000

char pic[maxn][maxn];
int ltf[maxn][maxn],m,n;

void dfs(int h,int l,int lt){
    if(h<0 || h>=m || l< 0 || l>=n) return;
    if(ltf[h][l]==0 && pic[h][l]==@){
        ltf[h][l]=lt;
        for(int i=-1;i<=1;i++)
        for(int j=-1;j<=1;j++)
            if(i!=0 || j!=0 ) dfs(h+i,l+j,lt);
    }
    else 
    return;
}

int main(){
    while(scanf("%d%d",&m,&n)==2 && m && n){
        int cnt=0;
        for(int i=0;i<m;i++) scanf("%s",pic[i]);
        memset(ltf,0,sizeof(ltf));
        for(int i=0;i<m;i++)
        for(int j=0;j<n;j++)
            if(ltf[i][j]==0 && pic[i][j]==@) dfs(i,j,++cnt);
        cout<<cnt<<endl;
    }
    return 0;
}

 

以上是关于UVA 572 BFS 图论入门的主要内容,如果未能解决你的问题,请参考以下文章

UVA 572 -- Oil Deposits(DFS求连通块+种子填充算法)

题解 UVA572 Oil Deposits

题解 UVA572 Oil Deposits

用dfs求联通块(UVa572)

6-12 油田 uva572

Uva 1599 最佳路径