Submission #1165266

#TimeUsernameProblemLanguageResultExecution timeMemory
1165266s101gTracks in the Snow (BOI13_tracks)C++20
2.19 / 100
1144 ms781336 KiB
#include <bits/stdc++.h>
using namespace std;
vector<int> dr{-1, 1, 0, 0}, dc{0, 0, 1, -1};
int n, m;
vector<vector<char>> a;
vector<vector<bool>> vis;
void dfs(int r, int c, char cc)
{
    if (r < 0 || c < 0 || r >= n || c >= m || vis[r][c] || a[r][c] != cc)
        return;
    vis[r][c] = true;
    a[r][c] = 'X';
    for (int i = 0; i < 4; i++)
    {
        dfs(r + dr[i], c + dc[i], cc);
    }
}
int main()
{
    cin >> n >> m;
    a = vector<vector<char>>(n, vector<char>(m));
    vis = vector<vector<bool>>(n, vector<bool>(m, false));
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            cin >> a[i][j];
        }
    }
    if (a[0][0] == '.')
        cout << 0 << "\n";
    else
    {
        int ans = 1;
        dfs(0, 0, a[0][0]);
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < m; j++)
            {
                if (a[i][j] != '.' && a[i][j] != 'X')
                {
                    ans++;
                    break;
                }
            }
            if (ans > 1)
                break;
        }
        cout << ans << '\n';
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...