1. 程式人生 > >NYOJ —水池數目

NYOJ —水池數目

#include<stdio.h>
#include<string.h>
int a[105][105],b[105][105];
void fun(int x,int y)
{
    if(!a[x][y]||b[x][y])
    return ;
    b[x][y]=1;
    fun(x-1,y);
    fun(x,y+1);
    fun(x+1,y);
    fun(x,y-1);
}
int main()
{
    int k;
    scanf("%d",&k);
    while(k--)
    {
        int m,n,i,j,num=0;
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        scanf("%d%d",&m,&n);
        for(i=0;i<m;i++)
        {
            for(j=0;j<n;j++)
            {
                scanf("%d",&a[i+1][j+1]);
            }
        }
        for(i=0;i<m;i++)
        {
            for(j=0;j<n;j++)
            {
                if(a[i+1][j+1]&&!b[i+1][j+1])
                {
                    num++;
                    fun(i+1,j+1);
                }
            }
        }
        printf("%d\n",num);
    }
    return 0;
}