这题就是让我们求最大连通的点数,简单的DFS。不过WA了4把,就因为把矩阵约束了,唉,没想清楚额。
Memory: 332KTime: 16MSLanguage: CResult: Accepted}
#include<stdio.h>
#include<string.h>
#define MAX 105
int map[MAX][MAX];
int p[4][2]={{0,1},{1,0},{-1,0},{0,-1}};
int n,m,k,count;
void dfs(int x,int y)
{
int xx,yy,i;
count++;
map[x][y]=0;
for(i=0;i<4;i++)
{
xx=x+p[i][0];
yy=y+p[i][1];
// if(xx<=0||xx>m||yy<=0||yy>n)这句是不要的,因此WA4次。。
// continue;
if(map[xx][yy]==1)
dfs(xx,yy);
}
}
int main()
{
int i,j,a,b,max;
while(scanf("%d%d%d",&n,&m,&k)!=EOF)
{
max=0;
memset(map,0,sizeof(map));
for(i=0;i<k;i++)
{
scanf("%d%d",&a,&b);
map[a][b]=1;
}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
if(map[i][j]==1)
{
count=0;
dfs(i,j);
}
if(count>max)
max=count;
}
printf("%d\n",max);
}
return 0;