Submission #541406

#TimeUsernameProblemLanguageResultExecution timeMemory
541406NireyTracks in the Snow (BOI13_tracks)C++17
22.19 / 100
41 ms8396 KiB
#include <bits/stdc++.h>
using namespace std;

int dx[4]={1,-1,0,0} , dy[4]={0,0,1,-1};

int n,m,depth[400][400],ans=1;
string snow[400];

bool inside(int x,int y){
	return (x>-1 && x<n && y>-1 && y<m && snow[x][y]!='.');
}

int main(){
	cin >>n >>m;
	for(int i=0;i<n;i++) cin >>snow[i];
	deque<pair<int,int>> q;
	q.push_back({0,0});
	depth[0][0]=1;
	while(q.size()){
	 pair<int,int> c=q.front();
	 q.pop_front();
	 ans=max(ans,depth[c.first][c.second]);
	 
	for(int i=0;i<4;i++){
	int x=c.first+dx[i],y=c.second+dy[i];
	if(inside(x,y) && not depth[x][y]){
	 if(snow[x][y]==snow[c.first][c.second]){
	 depth[x][y]=depth[c.first][c.second];
	  q.push_front({x,y});
	 }
	 else {
	  depth[x][y]=depth[c.first][c.second]+1;
	  q.push_back({x,y});
	 }
	}
	}
	}
	cout << ans << endl;

	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...