Submission #1184614

#TimeUsernameProblemLanguageResultExecution timeMemory
1184614cpp_noobMaze (JOI23_ho_t3)C++20
0 / 100
0 ms328 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; int R,C,N,sx,sy,gx,gy; const int inf = 1e9; int check(int x,int y){ return x>=0 and x<R and y>=0 and y<C; } int dx[4] = {1,-1, 0, 0}; int dy[4] = { 0, 0,1,-1}; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>R>>C>>N>>sx>>sy>>gx>>gy; sx--; sy--; gx--; gy--; vector<vector<char>> graph(R,vector<char>(C)); vector<vector<int>> cost(R,vector<int>(C,inf)); vector<vector<bool>> vis(R,vector<bool>(C,false)); for(int i = 0;i<R;i++){ for(int j = 0;j<C;j++){ cin>>graph[i][j]; } } queue<pair<int,int>> Q; Q.push({sx,sy}); cost[sx][sy] = 0; while(!Q.empty()){ auto [x,y] = Q.front(); Q.pop(); if(vis[x][y])continue; vis[x][y] = true; for(int i = 0;i<4;i++){ int nx = x+dx[i]; int ny = y+dy[i]; if(check(nx,ny)==0)continue; if(graph[nx][ny] == '.'){ cost[nx][ny] = min(cost[nx][ny],cost[x][y]); Q.push({nx,ny}); }else{ for(int j = nx-(N-1);j<=nx+(N-1);j++){ for(int k = ny;k<ny+N;k++){ if(check(j,k)==1){ cost[j][k] = min(cost[x][y]+1,cost[j][k]); Q.push({j,k}); } } } } } } cout<<cost[gx][gy]; 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...