#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
#define ffr(i, s, n) for (int i = s; i < n; i++)
vector<vector<bool>> adj, visited;
void flood_fill(ll i, ll j, ll n, ll m, char color, vector<string> &snow)
{
    if (i < 0 || i >= n || j < 0 || j >= m)
        return;
    if (snow[i][j] == '.' || visited[i][j])
        return;
    visited[i][j] = 1;
    flood_fill(i + 1, j, n, m, color, snow);
    flood_fill(i - 1, j, n, m, color, snow);
    flood_fill(i, j + 1, n, m, color, snow);
    flood_fill(i, j - 1, n, m, color, snow);
}
void solve()
{
    ll n, m;
    cin >> n >> m;
    visited.assign(n, vector<bool>(m));
    vector<string> snow(n);
    ffr(i, 0, n)
    {
        cin >> snow[i];
    }
    ll ans = 0;
    ffr(i, 0, n)
    {
        ffr(j, 0, m)
        {
            if (!visited[i][j] && snow[i][j] != '.')
            {
                flood_fill(i, j, n, m, snow[i][j], snow);
                ans++;
            }
        }
    }
    cout << ans + 1 << "\n";
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    solve();
    return 0;
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |