您的位置:首页 > 其它

ZOJ1709 || POJ 1562 DFS 水 求强连通的个数

2012-06-04 23:17 507 查看
View Code

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include<ctype.h>

char map[101][101];
int visit[101][101],m,n;
int dx[] = {0,1,-1, 0,1, 1,-1,-1};
int dy[] = {1,0, 0,-1,1,-1,-1, 1};

void DFS(int x,int y)
{
int i, x1, y1;
visit[x][y] = 1;
for(i=0; i<8; i++)
{
x1 = x + dx[i];
y1 = y + dy[i];
if(!visit[x1][y1]&&map[x1][y1]=='@'&&x1>=0&&x1<m&&y1>=0&&y1<n)
{
visit[x1][y1] = 1;
DFS(x1,y1);
}
}
}

int main()
{
int i,j,count;

while(scanf("%d%d",&m,&n)&&m&&n)
{
memset(visit,0,sizeof(visit));
for(i=0; i<m; i++)
{
scanf("%s",map[i]);
getchar();
}
count = 0;
for(i=0; i<m; i++)
for(j=0; j<n; j++)
{
if(!visit[i][j]&&map[i][j]=='@')
{
count++;
DFS(i,j);
}
}
printf("%d\n",count);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: