简单的搜索题,深搜即可。
View Code
1 #include <stdio.h>
2 #include <string.h>
3 #define MAX(a,b) ((a)>(b)?(a):(b))
4 #define CLR(a) (memset(a,0,sizeof(a)))
5 #define N 101
6 char g[N][N];
7 int n,m,k,ans,tmp;
8 int dir[4][2]={1,0,0,1,-1,0,0,-1};
9 void dfs(int i,int j)
10 {
11 int d,ni,nj;
12 g[i][j]=0,tmp++;
13 for(d=0;d<4;d++)
14 {
15 ni=i+dir[d][0],nj=j+dir[d][1];
16 if(ni<0 || nj<0 || ni>=n || nj>=m || g[ni][nj]==0) continue;
17 dfs(ni,nj);
18 }
19 }
20 int main()
21 {
22 int i,j,a,b;
23 freopen("in.txt","r",stdin);
24 {
25 for(i=0;i<k;i++)
26 {
27 scanf("%d%d",&a,&b);
28 g[a-1][b-1]=1;
29 }
30 ans=0;
31 for(i=0;i<n;i++)
32 {
33 for(j=0;j<m;j++)
34 {
35 if(g[i][j]==1)
36 {
37 tmp=0;
38 dfs(i,j);
39 ans=MAX(ans,tmp);
40 }
41 }
42 }
43 printf("%d\n",ans);
44 CLR(g);
45 }
46 return 0;
47 }