HDU - 1241 Oil Deposits 经典dfs 格子

时间:2021-05-25 05:10:16

最水的一道石油竟然改了一个小时,好菜好菜。

x<=r  y<=c  x<=r  y<=c  x<=r  y<=c  x<=r y<=c

#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
int dir[][]={,, ,-, ,, -,, ,, ,-, -,, -,-};
int r,c;
int a[][];
int ans; void dfs(int x,int y)
{
int tx,ty,i,j;
for(i=;i<;i++)
{
tx=x+dir[i][];
ty=y+dir[i][];
if(tx>=&&tx<r&&ty>=&&ty<c&&a[tx][ty]==)
{
a[tx][ty]=;
dfs(tx,ty);
}
}
} int main()
{
char s;
int i,j;
while(scanf("%d%d",&r,&c)!=EOF)
{
ans=;
if(r==||c==)break;
memset(a,,sizeof(a));
for(i=;i<r;i++){
for(j=;j<c;j++){
scanf(" %c",&s);
if(s=='@')
a[i][j]=;
else a[i][j]=;
}
}
/* for(i=0;i<r;i++)
{
for(j=0;j<c;j++)
printf("%d ",a[i][j]);
printf("\n");
}*/
for(i=;i<r;i++)
for(j=;j<c;j++)
{
if(a[i][j]==)
{
a[i][j]=;
dfs(i,j);
ans++;
}
}
printf("%d\n",ans);
}
return ;
}