fork download
  1. /*
  2. * author : 3hmed_124M
  3. */
  4. #include <bits/stdc++.h>
  5. using namespace std;
  6. #define ll long long
  7. #define int long long
  8. #define el '\n'
  9. #define all(v) v.begin(), v.end()
  10. const int mod = 1e9 + 7;
  11. int dx[] = {-1, 0, 0, 1};
  12. int dy[] = {0, 1, -1, 0};
  13.  
  14. void solve() {
  15.  
  16. int n, m;
  17. cin >> n >> m;
  18. vector<vector<char>>grid(n, vector<char>(m));
  19. for(int i = 0; i < n; ++i) {
  20. for(int j = 0; j < m; ++j) {
  21. cin >> grid[i][j];
  22. }
  23. }
  24.  
  25. vector<vector<bool>>vis(n, vector<bool>(m));
  26.  
  27. function<bool(int, int, char)> isvalid = [&](int i, int j, char ch) -> bool {
  28.  
  29. return (i >= 0 && i <= n - 1 && j >= 0 && j <= m - 1 && !vis[i][j] && grid[i][j] == ch);
  30.  
  31. };
  32.  
  33. function<void(int, int, char)> concted = [&](int i, int j, char ch) -> void {
  34.  
  35. if(!isvalid(i, j, ch)) {
  36. return;
  37. }
  38.  
  39. vis[i][j] = 1;
  40. for(int idx = 0; idx < 4; ++idx) {
  41. concted(i + dx[idx], j + dy[idx], ch);
  42. }
  43.  
  44. };
  45.  
  46.  
  47. int cnt = 0;
  48. for(int i = 0; i < n; ++i) {
  49. for(int j = 0; j < m; ++j) {
  50. if(!vis[i][j]) {
  51. concted(i, j, grid[i][j]);
  52. cnt++;
  53. }
  54. }
  55. }
  56.  
  57. cout << cnt << el;
  58.  
  59.  
  60. }
  61. int32_t main() {
  62.  
  63. ios_base::sync_with_stdio(false);
  64. cout.tie(NULL), cin.tie(NULL);
  65.  
  66. // if(fopen("in.txt", "r")){
  67. // freopen("in.txt", "r", stdin);
  68. // freopen("out.txt", "w", stdout);
  69. // }
  70.  
  71. int tt = 1;
  72. // cin >> tt;
  73. while (tt--) {
  74. solve();
  75. }
  76.  
  77. return 0;
  78. }
Success #stdin #stdout 0.01s 5284KB
stdin
Standard input is empty
stdout
0