#include "stdafx.h"
#include <iostream>
#include <cstring>
#include <vector>
#include <map>
#include <set>
#include <algorithm>
#include <iterator>
#include <list>
#include <stack>
#include <math.h>
using namespace std;
/*
T1 杭电1241*/
int n,m;
char a[101][101];
int d[8][2]={{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1},{-1,0},{-1,1}};
int sum=0;
void dfs(int x,int y)
{
int i;
int tx,ty;
for(i=0;i<8;i++)
{
tx=x+d[i][0];
ty=y+d[i][1];
if( a[tx][ty] == '@' && tx<=n && tx>=1 && ty>=1 && ty<=m )
{
a[tx][ty]='*';
dfs(tx,ty);
}
}
}
int main()
{
int i,j;
while(cin>>n>>m && (n!=0 || m!=0))
{
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
cin>>a[i][j];
sum=0;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
if(a[i][j] == '*' )
continue;
dfs(i,j);
a[i][j]='*';
sum++;
}
}
cout<<sum<<endl;
}
return 0;
}
图论 DFS HDU 1241
最新推荐文章于 2021-02-23 16:18:04 发布