Submission #1126464

#TimeUsernameProblemLanguageResultExecution timeMemory
1126464AgageldiTracks in the Snow (BOI13_tracks)C++20
100 / 100
1269 ms171508 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define N 400005 #define ff first #define ss second #define pb push_back #define sz(s) (int)s.size() #define rep(c, a, b) for(c = a; c <= b; c++) int c[] = {0,0,-1,1}; int d[] = {1,-1,0,0}; ll n, m, cnt = 0, vis[5000][5000]; char a[5000][5000]; queue <pair<int,int>> q, h; int main () { ios::sync_with_stdio(0);cin.tie(0); cin >> n >> m; for(int i= 1;i<=n;i++) { for(int j =1;j<=m;j++) { cin >> a[i][j]; } } q.push({1,1}); cnt = 1; while(!q.empty()) { int y1 = q.front().ff,y2 = q.front().ss; bool tr = 0; q.pop(); for(int i = 0; i < 4; i++) { int x1 = y1 + c[i], x2 = y2 + d[i]; if(x1 <= 0 || x2 <= 0 || x1 > n || x2 > m || a[x1][x2] == '.') continue; if(vis[x1][x2]) continue; vis[x1][x2] = 1; if(a[x1][x2] != a[y1][y2]) { h.push({x1,x2}); } else q.push({x1,x2}); } a[y1][y2] = '.'; if(q.empty()) { if(!h.empty())cnt++; while(!h.empty()) { q.push({h.front().ff,h.front().ss}); h.pop(); } cout << '\n'; } } cout << cnt << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...