Submission #1107180

#TimeUsernameProblemLanguageResultExecution timeMemory
1107180danielsuhTracks in the Snow (BOI13_tracks)C++17
8.85 / 100
2104 ms982100 KiB
#include <bits/stdc++.h>

typedef long long ll;
using namespace std;

vector<int> dx = {1, -1, 0, 0};
vector<int> dy = {0, 0, 1, -1};

void floodfill(vector<string>& grid, vector<vector<bool>>& visited, int i, int j, char current_animal) {
	if(i < 0 || j < 0 || i >= grid.size() || j >= grid[0].size()) return;
	if(grid[i][j] != current_animal && grid[i][j] != '#') return;
	if(visited[i][j]) return;

	visited[i][j] = true;
	grid[i][j] = '#';

	for(int k = 0; k < 4; k++) {
		floodfill(grid, visited, i + dx[k], j + dy[k], current_animal);
	}
}

int32_t main() {
	ios::sync_with_stdio(false); cin.tie(nullptr);
	int N, M; cin >> N >> M;
	vector<string> grid(N); for(auto &x : grid) cin >> x;
	vector<vector<bool>> visited(N, vector<bool>(N, false));

	char current_animal = grid[0][0];

	int sum = 0;
	for(int i = 0; i < N; i++) {
		for(int j = 0; j < M; j++) {
			if(grid[i][j] == current_animal) {
				floodfill(grid, visited, i, j, current_animal);
				visited[i][j] = true;
				fill(visited.begin(), visited.end(), vector<bool>(N, false));
				current_animal = (current_animal == 'R' ? 'F' : 'R');
				sum++;
			}
		}
	}
	cout << sum << endl;
}

Compilation message (stderr)

tracks.cpp: In function 'void floodfill(std::vector<std::__cxx11::basic_string<char> >&, std::vector<std::vector<bool> >&, int, int, char)':
tracks.cpp:10:25: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::__cxx11::basic_string<char> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   10 |  if(i < 0 || j < 0 || i >= grid.size() || j >= grid[0].size()) return;
      |                       ~~^~~~~~~~~~~~~~
tracks.cpp:10:45: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   10 |  if(i < 0 || j < 0 || i >= grid.size() || j >= grid[0].size()) return;
      |                                           ~~^~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...