Submission #1156185

#TimeUsernameProblemLanguageResultExecution timeMemory
1156185irmuunMaze (JOI23_ho_t3)C++20
0 / 100
0 ms328 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define ff first #define ss second #define all(s) s.begin(),s.end() #define rall(s) s.rbegin(),s.rend() ll r,c,n; ll sr,sc; ll gr,gc; vector<vector<ll>>g,dist; vector<vector<char>>s; vector<ll>adj,ans; vector<ll>dx={0,0,-1,1}; vector<ll>dy={-1,1,0,0}; ll G=0;//group number void dfs(ll x,ll y){ for(ll k=0;k<4;k++){ ll nx=x+dx[k],ny=y+dy[k]; if(nx<1||ny<1||nx>r||ny>c||s[nx][ny]=='#'||g[nx][ny]!=0) continue; g[nx][ny]=G; dfs(nx,ny); } } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin>>r>>c>>n; cin>>sr>>sc; cin>>gr>>gc; s.resize(r+1); for(ll i=1;i<=r;i++){ s[i].resize(c+1); for(ll j=1;j<=c;j++){ cin>>s[i][j]; } } g.resize(r+1); for(ll i=1;i<=r;i++){ g[i].resize(c+1); for(ll j=1;j<=c;j++){ if(g[i][j]==0&&s[i][j]=='.'){ G++; g[i][j]=G; dfs(i,j); } } } ans.resize(G+1); fill(all(ans),1e9); dist.resize(G+1); for(ll i=1;i<=G;i++){ dist[i].resize(G+1); fill(all(dist[i]),1e9); } for(ll i=1;i<=r;i++){ for(ll j=1;j<=c;j++){ for(ll x=1;x<=r;x++){ for(ll y=1;y<=c;y++){ if(g[i][j]==0||g[x][y]==0||g[i][j]==g[x][y]) continue; ll g1=min(g[i][j],g[x][y]),g2=max(g[i][j],g[x][y]); ll need=max(abs(i-x)-1,abs(j-y)-1); need=(need+n-1)/n; dist[g1][g2]=min(dist[g1][g2],need); dist[g2][g1]=min(dist[g2][g1],need); } } } } return 0; ans[g[sr][sc]]=0; set<array<ll,2>>q; q.insert({0,g[sr][sc]}); while(!q.empty()){ auto [L,x]=*q.begin(); q.erase(q.begin()); if(ans[x]!=L) continue; for(ll y=1;y<=G;y++){ if(ans[x]+dist[x][y]<ans[y]){ ans[y]=ans[x]+dist[x][y]; q.insert({ans[y],y}); } } } cout<<ans[g[gr][gc]]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...