Submission #554484

#TimeUsernameProblemLanguageResultExecution timeMemory
554484savackexpTracks in the Snow (BOI13_tracks)C++14
100 / 100
1107 ms345088 KiB
#include<bits/stdc++.h> using namespace std; #define in insert #define fastio ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define endl "\n" #define Endl "\n" #define ENDL "\n" #define fi first #define se second #define be begin() #define en end() #define pb push_back typedef long long ll; typedef long double ld; const int MOD=1e9+7; const int MAX=2e5+1;/* ll binpow(ll a, ll b) { ld res = 1; while (b > 0) { if (b & 1) res = res * a; a = a * a; b >>= 1; } return res; } unsigned long long power(unsigned long long x, ll y, ll p) { unsigned long long res = 1; // Initialize result x = x % p; // Update x if it is more than or // equal to p while (y > 0) { // If y is odd, multiply x with result if (y & 1) res = (res * x) % p; // y must be even now y = y >> 1; // y = y/2 x = (x * x) % p; } return res; } unsigned long long modInverse(unsigned long long n, ll p) { return power(n, p - 2, p); } */ ll n , m ; char grid[4005][4005]; ll vis[4006][4006]; ll level[4006][4006]; ll dx[]={0 , 0 , 1 , -1}; ll dy[]={-1 , 1 , 0 , 0}; bool valid(ll x , ll y) { return x>=0 && y>=0 && x<n && y<m && grid[x][y] != '.' && !vis[x][y]; } ll max1=0; void bfs(ll x ,ll y) { deque<pair<ll,ll>>q; q.push_front({x,y}); for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { level[i][j]=-1e18; } } level[x][y]=0; vis[x][y]=1; while(!q.empty()) { pair<ll,ll>p = q.front(); q.pop_front(); max1=max(max1 , level[p.fi][p.se]); for(int i=0;i<4;i++) { ll nx = p.fi + dx[i]; ll ny = p.se + dy[i]; if(!valid(nx , ny))continue; if(grid[nx][ny]==grid[p.fi][p.se]) { level[nx][ny]=level[p.fi][p.se]; q.push_front({nx,ny}); } else { level[nx][ny]=level[p.fi][p.se]+1; q.push_back({nx,ny}); } vis[nx][ny]=1; } } } int main() { fastio //freopen("lasers.in","r",stdin); //freopen("lasers.out","w",stdout); cin>>n>>m; for(int i=0;i<n;i++) { string s; cin>>s; for(int j=0;j<s.size();j++) { grid[i][j]=s[j]; } } bfs(0 , 0); cout<<max1+1<<endl; return 0; } /* 5 6 0 4 0 0 3 1 0 1 1 0 2 1 1 2 1 3 4 0 */

Compilation message (stderr)

tracks.cpp: In function 'int main()':
tracks.cpp:121:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  121 |             for(int j=0;j<s.size();j++)
      |                         ~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...