好简单的一道搜索题,可是搜索学的不到家,还是·····,哎······,你懂的························
水··························
题意:求联通子图的个数,据说也可以用并查集来做!
#include"stdio.h"
#include"string.h"
char map[200][200];
int n,m;
int dr[] = {-1, -1, -1, 0, 1, 1, 1, 0};
int dc[] = {-1, 0, 1, 1, 1, 0, -1, -1};
void dfs(int r, int c)
{
if(map[r][c] == '@')
{
map[r][c] = '*';
for(int i=0; i<8; i++)
dfs(r+dr[i], c+dc[i]);
}
}
int main()
{
int ans,i,j;
while(scanf("%d%d",&n,&m),n+m)
{
ans=0;
for(i=1;i<=n;i++)
scanf("%s",map[i]+1);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
if(map[i][j]=='@')
{
ans++;
dfs(i,j);
}
}
printf("%d\n",ans);
}
return 0;
}