Submission #832140

#TimeUsernameProblemLanguageResultExecution timeMemory
832140vjudge1Tracks in the Snow (BOI13_tracks)C++17
100 / 100
1080 ms104496 KiB
#include<bits/stdc++.h> #define fi first #define se second using namespace std; char meadow[4004][4004]; int num[4004][4004] = {0}; int main() { int row, column; cin >> row >> column; for(int i=1; i<=row; i++) { for(int j=1; j<=column; j++) { cin >> meadow[i][j]; } } int animals = 1; queue<pair<int,int>>q; stack<pair<int,int>>other; q.push({1,1}); num[1][1] = 1; while(!q.empty()) { int bar = q.front().fi; int kol = q.front().se; q.pop(); animals = max(animals, num[bar][kol]); //atas if(bar-1>=1 && num[bar-1][kol]==0) { if(meadow[bar-1][kol] == meadow[bar][kol]) { q.push({bar-1,kol}); num[bar-1][kol] = num[bar][kol]; } else if(meadow[bar-1][kol] != '.') { other.push({bar-1,kol}); num[bar-1][kol] = num[bar][kol]+1; } } //bawah if(bar+1<=row && num[bar+1][kol]==0) { if(meadow[bar+1][kol] == meadow[bar][kol]) { q.push({bar+1,kol}); num[bar+1][kol] = num[bar][kol]; } else if(meadow[bar+1][kol] != '.') { other.push({bar+1,kol}); num[bar+1][kol] = num[bar][kol]+1; } } //kiri if(kol-1>=1 && num[bar][kol-1]==0) { if(meadow[bar][kol-1] == meadow[bar][kol]) { q.push({bar,kol-1}); num[bar][kol-1] = num[bar][kol]; } else if(meadow[bar][kol-1] != '.') { other.push({bar,kol-1}); num[bar][kol-1] = num[bar][kol]+1; } } //kanan if(kol+1<=column && num[bar][kol+1]==0) { if(meadow[bar][kol+1] == meadow[bar][kol]) { q.push({bar,kol+1}); num[bar][kol+1] = num[bar][kol]; } else if(meadow[bar][kol+1] != '.') { other.push({bar,kol+1}); num[bar][kol+1] = num[bar][kol]+1; } } if(q.empty()==true) { while(!other.empty()) { q.push(other.top()); other.pop(); } } } cout << animals << endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...