fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int m,n;
  4. int now = 0;
  5. char ch,ch2;
  6. char Map[30][30];
  7.  
  8. int DFS(int x,int y)
  9. {
  10. Map[x][y] = ch2;
  11. now++;
  12. if(x-1 >= 0)
  13. if(Map[x-1][y]==ch)
  14. DFS(x-1,y);
  15. if(x+1 < n)
  16. if(Map[x+1][y]==ch)
  17. DFS(x+1,y);
  18. if(y-1 >= 0)
  19. if(Map[x][y-1]==ch)
  20. DFS(x,y-1);
  21. if(y+1 < m)
  22. if(Map[x][y+1]==ch)
  23. DFS(x,y+1);
  24. if(y==n-1)
  25. if(Map[x][0]==ch)
  26. DFS(x,0);
  27. if(y==0)
  28. if(Map[x][n-1]==ch)
  29. DFS(x,n-1);
  30. return now;
  31. }
  32. int main()
  33. {
  34. int x,y;
  35. int i,j;
  36. int r;
  37. int max = 0;
  38. int find = 0;
  39. while(scanf("%d %d",&m,&n)==2)
  40. {
  41. for(i=0;i<m;i++)
  42. scanf("%s",Map[i]);
  43. scanf("%d %d",&x,&y);
  44. ch = Map[x][y];
  45. for(i=0;i < m;i++)
  46. for(j=0;j < n;j++)
  47. if(Map[i][j]!=ch)
  48. {
  49. find = 1;
  50. ch2 = Map[i][j];
  51. break;
  52. }
  53. if(find==0)
  54. ch2 = !ch;
  55. DFS(x,y);
  56. for(i=0;i < m;i++)
  57. for(j=0;j < n;j++)
  58. {
  59. if(Map[i][j]== ch)
  60. {
  61. now = 0;
  62. r = DFS(i,j);
  63. if(r > max)
  64. max = r;
  65. }
  66. }
  67. printf("%d\n",max);
  68. for(i=0;i<m;i++)
  69. for(j=0;j<n;j++)
  70. Map[i][j] = 0;
  71. max = 0;
  72. find = 0;
  73. }
  74. return 0;
  75. }
  76.  
Success #stdin #stdout 0.02s 1720KB
stdin
Standard input is empty
stdout
Standard output is empty