POJ 1562 Oil Deposits

weixin_34041003發表於2013-09-02

轉載請註明出處:http://blog.csdn.net/a1dark

大規模的圖論切題之旅正式開始了、由於今天停了一天的電、所以晚上才開始切題、直到昨晚才把圖論大概看了一遍、雖然網路流部分還是不怎麼懂、但是也懂得了一些基礎的演算法、相信只要不斷的刷題、必然可以可以搞懂、至於連通和匹配還是隻是有那麼一些概念、只會一些模板、等做題做多了自然就會懂了、努力切題中。。。

分析:剛開始水一發、這題很簡單、應該儘量1次做對、一個簡單的圖的DFS搜尋、思路就不講了、看看程式碼應該沒什麼問題、

 

#include<stdio.h>
#include<string.h>
int dir[8][2]={0,1,1,0,0,-1,-1,0,1,1,1,-1,-1,1,-1,-1};
char map[150][150];
int m,n;
void dfs(int x,int y){
    if(map[x][y]=='*')
        return;
    map[x][y]='*';
    for(int i=0;i<8;i++){
        int tx=x+dir[i][0];
        int ty=y+dir[i][1];
        if(tx<1||tx>m||ty<1||ty>n)continue;
        if(map[tx][ty]=='@')
            dfs(tx,ty);
    }
    return;
}
int main(){
    int i,j;
    while(scanf("%d%d",&m,&n)!=EOF){
        memset(map,'\0',sizeof(map));
        if(m==0)break;
        for(i=1;i<=m;i++)
            scanf("%s",map[i]+1);
        int ans=0;
        for(i=1;i<=m;i++)
            for(j=1;j<=n;j++)
                if(map[i][j]=='@'){
                    dfs(i,j);
                    ans++;
                }
        printf("%d\n",ans);
    }
    return 0;
}


 

 

相關文章