제출 #924148

#제출 시각아이디문제언어결과실행 시간메모리
924148vjudge1Maze (JOI23_ho_t3)C++17
8 / 100
67 ms73588 KiB
#include <bits/stdc++.h> #define pb push_back #define fst first #define snd second #define fore(i,a,b) for(ll i=a,ggdem=b;i<ggdem;++i) #define SZ(x) ((int)x.size()) #define ALL(x) x.begin(),x.end() #define mset(a,v) memset((a),(v),sizeof(a)) #define FIN ios::sync_with_stdio(0);cin.tie(0);cout.tie(0) #define imp(v) for(auto edu:v)cout<<edu<<" "; cout<<"\n" using namespace std; typedef long long ll; typedef pair<ll,ll> ii; const ll MAXN=6e6+5; ll a[MAXN]; ll n,m,k; ll cv(ii x){return m*x.fst+x.snd;} ii cv(ll x){return {x/m,x%m};} vector<ii>dir={{0,1},{-1,0},{0,-1},{1,0}}; ii operator+(ii a, ii b){return {a.fst+b.fst,a.snd+b.snd};} bool allowed(ii p){ auto [i,j]=p; if(i<0||i>=n||j<0||j>=m)return 0; return 1; } ll d[MAXN]; void bfs(ii s){ mset(d,-1); deque<ii>q; d[cv(s)]=0; q.push_front(s); while(SZ(q)){ auto x=q.front(); q.pop_front(); for(auto add:dir){ auto y=x+add; if(!allowed(y)||d[cv(y)]!=-1)continue; if(a[cv(y)])q.pb(y),d[cv(y)]=d[cv(x)]+1; else q.push_front(y),d[cv(y)]=d[cv(x)]; } /*if(a[cv(x)]){ }*/ } } int main(){FIN; cin>>n>>m>>k; ii s,e; cin>>s.fst>>s.snd>>e.fst>>e.snd; s.fst--,s.snd--,e.fst--,e.snd--; fore(i,0,n*m){ char c; cin>>c; a[i]=(c=='#'); } bfs(s); cout<<d[cv(e)]<<"\n"; return 0; }
#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...