Submission #1081280

#TimeUsernameProblemLanguageResultExecution timeMemory
1081280MrPavlitoTracks in the Snow (BOI13_tracks)C++17
56.25 / 100
378 ms451736 KiB
#include <bits/stdc++.h> #define int long long #define pb push_back #define mp make_pair #define all(x) (x).begin(),(x).end() #define fi first #define sc second #define endl "\n" #define pii pair<int,int> using namespace std; const int MAXN = 2e6; const int mod7 = 1e9+7; const long long inf = 1e18; vector<vector<pii>> graf(MAXN); vector<bool> visited(MAXN); char val[MAXN]; vector<int> dist(MAXN,inf); set<pii> pq; /* void dfs(int nod) { visited[nod] = 1; pq.insert(mp(0, nod)); dist[nod] = 0; for(auto x: graf[nod])if(val[nod] == val[x.fi] && !visited[x.fi])dfs(x.fi); } */ void dikstra() { dist[0] = 0; pq.insert({0,0}); while(!pq.empty()) { auto it = pq.begin(); int u = it -> sc; pq.erase(it); for(auto x: graf[u]) { int nod = x.fi; int w = x.sc; if(dist[nod] > dist[u]+w) { pq.erase({dist[nod], nod}); dist[nod] = dist[u]+w; pq.insert({dist[nod], nod}); } } } } signed main() { ios_base::sync_with_stdio(false),cin.tie(0), cout.tie(0); int tt=1; //cin >> tt; while(tt--) { int n,m; cin >> n >> m; for(int i=0; i<n; i++) { string s;cin >> s; for(int j=0; j<m; j++) { val[i*m+j] = s[j]; if(s[j] == '.')continue; if(i>0 && val[(i-1)*m+j] != '.') { graf[i*m+j].pb(mp((i-1)*m+j,val[i*m+j] != val[(i-1)*m+j])); graf[(i-1)*m+j].pb(mp(i*m+j,val[i*m+j] != val[(i-1)*m+j])); } if(j>0 && val[i*m+j-1] != '.') { graf[i*m+j].pb(mp(i*m+j-1,val[i*m+j] != val[i*m+j-1])); graf[i*m+j-1].pb(mp(i*m+j,val[i*m+j] != val[i*m+j-1])); } } } //dfs(0); dikstra(); int mx = 0; for(auto x: dist)if(x!=inf)mx = max(mx,x); cout << mx+1 << endl; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...