POJ 3620 DFS

题意:
给你n*m的矩形,有k个坏点
问最大坏点连通块的坏点数。
一发水题。。
裸的DFS

// by SiriusRen
#include <cstdio>
#include <algorithm>
using namespace std;
int n,m,k,jy,jyx,jyy,xx[]={1,-1,0,0},yy[]={0,0,1,-1},a[105][105],vis[105][105],ans=0;
void dfs(int x,int y){
    for(int i=0;i<=3;i++)
        for(int j=0;j<=3;j++)
            if(a[x+xx[i]][y+yy[i]]==1&&!vis[x+xx[i]][y+yy[i]]){
                vis[x+xx[i]][y+yy[i]]=1;jy++;
                dfs(x+xx[i],y+yy[i]);
            }
}
int main(){
    scanf("%d%d%d",&n,&m,&k);
    while(k--)scanf("%d%d",&jyx,&jyy),a[jyx][jyy]=1;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            if(a[i][j]&&!vis[i][j]){
                jy=0;
                dfs(i,j);
                ans=max(ans,jy);
            }
    printf("%d",ans);
}

这里写图片描述

原文地址:https://www.cnblogs.com/SiriusRen/p/6532423.html