码迷,mamicode.com
首页 > 其他好文 > 详细

UVA 572 BFS 图论入门

时间:2018-02-09 22:20:48      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:max   gpo   eof   dfs   define   post   main   scan   return   

题干略。

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

#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 图论入门

标签:max   gpo   eof   dfs   define   post   main   scan   return   

原文地址:https://www.cnblogs.com/ucandoit/p/8436763.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!