NYOJ —水池數目
阿新 • • 發佈:2019-02-13
#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;
}
#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;
}