Submission #862587

#TimeUsernameProblemLanguageResultExecution timeMemory
862587neodoomerTracks in the Snow (BOI13_tracks)C++14
0 / 100
1397 ms1048576 KiB
#include<bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define F first #define S second #define pi pair<int,int> int main() { ios_base::sync_with_stdio(0); cin.tie(0);cout.tie(0); int n,m; cin>>n>>m; char g[n][m]; for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { cin>>g[i][j]; } } vector<pair<pi,bool> > adj[n][m]; int vis[n][m]; memset(vis,-1,sizeof vis); int dx[]={0,0,-1,1}; int dy[]={-1,1,0,0}; for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { for(int d=0;d<4;d++) { int ni=i+dx[d],nj=j+dy[d]; if(ni<n && ni>=0 && nj<m && nj>=0 && g[i][j]!='.' && g[ni][nj]!='.'){ adj[i][j].pb({{ni,nj},(g[i][j]==g[ni][nj])}); } } } } deque<pi> dq; dq.pb({0,0});vis[0][0]=0; int ans=0; while(!dq.empty()){ int i=dq.front().F,j=dq.front().S; dq.pop_back(); for(auto p:adj[i][j]) { int ni=p.F.F,nj=p.F.S,w=p.S; if(vis[ni][nj]!=-1)continue; vis[ni][nj]=w+vis[i][j]; ans=max(ans,vis[ni][nj]); if(w)dq.pb({ni,nj}); else dq.push_front({ni,nj}); } } cout<<ans; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...