제출 #520304

#제출 시각아이디문제언어결과실행 시간메모리
520304PikaQTracks in the Snow (BOI13_tracks)C++17
100 / 100
1118 ms194988 KiB
#include<bits/stdc++.h> // #define int ll #define forn(i,n) for(int i=0;i<(n);i++) #define Forn(i,n) for(int i=1;i<=(n);i++) #define For(i, a, b) for (int i = a; i <= b; i++) #define foR(i, a, b) for (int i = a; i >= b; i--) #define ll long long #define pb push_back #define F first #define S second #define lb lower_bound #define ub upper_bound #define vi vector<int> #define vl vector<long long> #define vpi vector<pair<int,int> > #define pii pair<int,int> #define pll pair<long long,long long> #define mp make_pair #define all(p) p.begin(),p.end() #define alr(p,q) p+1,p+q+1 #define ull unsigned long long #define st0(p) memset((p),0,sizeof(p)) #define T(x) ((x)%2 ? s[(x)/2] : '.') #define lowb(x) x&-x #define sz(x) (x).size() #define rz resize #define printv(x) {for(auto &i : x) {cout << i << ' ';}cout <<'\n';} using namespace std; inline void USACO(string filename){ freopen((filename+".in").c_str(),"r",stdin); freopen((filename+".out").c_str(),"w",stdout); } void debug() {cout << endl;} template <class T, class ...U> void debug(T a, U ... b) { cout << a << " "; debug(b...);} // template <class T> int max(T a, T ... b) { cout << a << " "; debug(b...);} const int INF = 1e9+7; const int mod = 1e9+7; const int N = 4e3+9; const int C = 35; const double eps = 1e-7; int n,m; int d[N][N]; char c[N][N]; int dx[4] = {1,0,-1,0}; int dy[4] = {0,1,0,-1}; bool vis[N][N]; bool inside(int x,int y){ return !(x < 0 || y < 0 || x >= n || y >= m || c[x][y] == '.'); } void solve(){ cin >> n >> m; forn(i,n) forn(j,m) cin >> c[i][j]; deque<pii> dq; dq.pb({0,0}); int ans = 0; while(!dq.empty()){ pii cur = dq.front();dq.pop_front(); vis[cur.F][cur.S] = 1; forn(i,4){ int nx = cur.F + dx[i],ny = cur.S + dy[i]; if(inside(nx,ny) && !vis[nx][ny] ){ // debug(nx,ny); if(c[nx][ny] == c[cur.F][cur.S]) { d[nx][ny] = d[cur.F][cur.S]; dq.push_front({nx,ny}); }else{ d[nx][ny] = d[cur.F][cur.S] +1; dq.push_back({nx,ny}); } } } ans = max(ans,d[cur.F][cur.S]); } cout << ans+1 << '\n'; } signed main(){ // USACO("248"); cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(0); // cout << "?"; // cout << fixed << setprecision(15); solve(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...