fork download
  1. #include<bits/stdc++.h>
  2. #include<stdio.h>
  3. using namespace std;
  4.  
  5. #define fastio ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
  6. #define MAX 100050
  7.  
  8. #define ll long long
  9. #define ld long double
  10. #define lli long long int
  11.  
  12. #define pb emplace_back
  13. #define INF 1000000000000
  14.  
  15. #define mod 1000000007
  16.  
  17. // trignometric function always give value in Radians only
  18. #define PI acos(-1) //3.1415926535897932384626433832795028
  19. #define dsin(degree) sin(degree*(PI/180.0))
  20. #define dcos(degree) cos(degree*(PI/180.0))
  21. #define dtan(degree) tan(degree*(PI/180.0))
  22.  
  23. #define rsin(radian) sin(radian)
  24. #define rcos(radian) cos(radian)
  25. #define rtan(radian) tan(radian)
  26.  
  27. #define loop(i,n) for (lli i = 0; i < n; i++)
  28. #define loopitr(xt,vec) for (auto xt : vec)
  29. #define FOR(i,a,b) for (lli i = a; i < b; i+=1)
  30. #define loop_rev(i,n) for (lli i = n-1; i >= 0; i--)
  31. #define FOR_REV(i,a,b) for (lli i = a; i >= b; i--)
  32. #define itr :: iterator it
  33. #define WL(t) while(t --)
  34.  
  35. #define all(v) v.begin(),v.end()
  36. #define rall(v) v.rbegin(),v.rend()
  37. #define sz(x) int(x.size())
  38. #define F first
  39. #define S second
  40.  
  41. #define mii map<lli,lli>
  42. #define vi vector<lli>
  43. #define vvi vector<vector<lli>>
  44. #define vbool vector<bool>
  45. #define seti set<lli>
  46. #define pii pair<lli,lli>
  47. #define pcc pair<char , char>
  48.  
  49. #define gcd(a,b) __gcd((a),(b))
  50. #define lcm(a,b) (a/gcd(a,b))*b
  51. #define abs(x) ((x < 0)?-(x):x)
  52.  
  53. #define endl '\n'
  54.  
  55. template <typename T>
  56. void print(T x){cout<<x<<endl;}
  57. template <typename T1, typename T2>
  58. void print2(T1 x,T2 y){cout<<x<<" "<<y<<endl;}
  59. template <typename T1, typename T2,typename T3>
  60. void print3(T1 x, T2 y,T3 z){cout<<x<<" "<<y<<" "<<z<<endl;}
  61.  
  62. #define scanarr(a,n) for(lli i=0;i<n;i++) cin>>a[i];
  63. #define scanvector(a,n) for(lli i=0;i<n;i++){ lli x ; cin>>x; a.pb(x);}
  64.  
  65. #define printarr(a,n) for(lli i=0;i<n;i++) cout<<a[i]<<" "; cout<<endl;
  66. #define printvector(vec) for(auto xt : vec) cout<<xt<<" "; cout<<"\n";
  67.  
  68. #define FD(N) fixed<<setprecision(N)
  69.  
  70. #define deb(x) cout<<#x<<" "<<x<<endl;
  71.  
  72. char input_grid[51][51];
  73. bool visited[51][51];
  74. lli h,w;
  75. lli next_x[8]={0,0,1,-1,1,-1,-1,1};
  76. lli next_y[8]={-1,1,0,0,-1,1,-1,1};
  77.  
  78. void dfs(lli x,lli y,lli &count){
  79. //getting current character
  80. char currChar = input_grid[x][y];
  81. //marking it as visited and incrementing count
  82. visited[x][y]=true; count++;
  83. //checking if end of alphabets reached
  84. if(currChar=='Z') return;
  85.  
  86. char nextChar = currChar+1;
  87. //performing dfs
  88. for(lli i=0;i<8;i++){
  89. lli dx=x+next_x[i];
  90. lli dy=y+next_y[i];
  91. //check if valid position
  92. if((dx>=1 && dx<=h) && (dy>=1 && dy<=w)){
  93. //if not visited and nextChar then call dfs
  94. if(!visited[dx][dy] && input_grid[dx][dy]==nextChar)
  95. dfs(dx,dy,count);
  96. }
  97. }
  98. }
  99. lli solve(){
  100. //taking input_grid and resetting visited
  101. for(int i=1;i<=h;i++){
  102. for(int j=1;j<=w;j++){
  103. cin>>input_grid[i][j];
  104. visited[i][j]=false;
  105. }
  106. }
  107.  
  108. lli max_answer = 0;
  109.  
  110. //traversing through input,finding A and then calling dfs if not visited
  111. for(int i=1;i<=h;i++){
  112. for(int j=1;j<=w;j++){
  113. if(input_grid[i][j]=='A' && !visited[i][j]){
  114. lli count=0;
  115. dfs(i,j,count);
  116. max_answer = max(max_answer,count);
  117. }
  118. }
  119. }
  120. return max_answer;
  121.  
  122. }
  123. int main(){
  124. lli t=1;
  125. cin>>h>>w;
  126. while(h!=0 && w!=0){
  127. lli answer = solve();
  128. cout<<"Case "<<t++<<": "<<answer<<endl;
  129. cin>>h>>w;
  130. }
  131. return 0;
  132. }
Success #stdin #stdout 0s 4400KB
stdin
Standard input is empty
stdout
Standard output is empty