您的位置:首页 > 其它

图论 DFS HDU 1241

2016-08-10 15:28 274 查看
#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: