제출 #1125639

#제출 시각아이디문제언어결과실행 시간메모리
1125639salmonMaze (JOI23_ho_t3)C++20
100 / 100
749 ms247032 KiB
#include <bits/stdc++.h> using namespace std; int R; int C; int N; vector<pair<int,int>> trans = {{-1,0},{1,0},{0,1},{0,-1}}; vector<pair<int,int>> dtrans = {{-1,0},{1,0},{0,1},{0,-1},{1,1},{1,-1},{-1,1},{-1,-1}}; queue<pair<int,int>> prop; queue<pair<int,int>> fprop; int sx,sy; int gx,gy; bool valid(int i, int j){ if(i < 0 || i >= R) return false; if(j < 0 || j >= C) return false; return true; } int main(){ scanf(" %d",&R); scanf(" %d",&C); scanf(" %d",&N); bool visited[R + 5][C + 5]; bool visited1[R + 5][C + 5]; char lst[R + 5][C + 5]; int d[R + 5][C + 5]; scanf(" %d",&sx); scanf(" %d",&sy); sx--; sy--; scanf(" %d",&gx); scanf(" %d",&gy); gx--; gy--; for(int i = 0; i < R; i++){ for(int j = 0; j < C; j++){ scanf(" %c",&lst[i][j]); if(lst[i][j] == '.'){ lst[i][j] = 1; } else{ lst[i][j] = 0; } d[i][j] = -1; visited[i][j] = false; visited1[i][j] = false; } } d[sx][sy] = 0; prop.push({sx,sy}); visited[sx][sy] = true; int cont = 0; while(d[gx][gy] == -1){// printf("%d\n",d[gx][gy]); vector<pair<int,int>> v; /*for(int i = 0; i < R; i++){ for(int j = 0; j < C; j++){ printf("%2d ",d[i][j]); } printf("\n"); } printf("\n");*/ while(!prop.empty()){ pair<int,int> ii = prop.front(); prop.pop(); v.push_back(ii); int i = ii.first; int j = ii.second; visited1[i][j] = true; for(pair<int,int> ii : trans){ int ni = ii.first + i; int nj = ii.second + j; if(!valid(ni,nj) || visited[ni][nj] || !lst[ni][nj]) continue; prop.push({ni,nj}); visited[ni][nj] = true; d[ni][nj] = cont; } } cont++; for(int i = 0; i < N - 1; i++){ while(!v.empty()){ fprop.push({v.back()}); //printf("%d %d\n",v.back().first,v.back().second); v.pop_back(); } while(!fprop.empty()){ pair<int,int> ii = fprop.front(); fprop.pop(); int i = ii.first; int j = ii.second; for(pair<int,int> ii : dtrans){ int ni = ii.first + i; int nj = ii.second + j; if(!valid(ni,nj) || visited[ni][nj]) continue; v.push_back({ni,nj}); prop.push({ni,nj}); visited[ni][nj] = true; visited1[ni][nj] = true; d[ni][nj] = cont; } } } while(!v.empty()){ fprop.push({v.back()}); //printf("s"); v.pop_back(); } while(!fprop.empty()){ pair<int,int> ii = fprop.front(); fprop.pop(); int i = ii.first; int j = ii.second; for(pair<int,int> ii : trans){ int ni = ii.first + i; int nj = ii.second + j; if(!valid(ni,nj) || visited[ni][nj]) continue; prop.push({ni,nj}); visited[ni][nj] = true; visited1[ni][nj] = true; d[ni][nj] = cont; } } } printf("%d",d[gx][gy]); }

컴파일 시 표준 에러 (stderr) 메시지

Main.cpp: In function 'int main()':
Main.cpp:22:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   22 |     scanf(" %d",&R);
      |     ~~~~~^~~~~~~~~~
Main.cpp:23:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   23 |     scanf(" %d",&C);
      |     ~~~~~^~~~~~~~~~
Main.cpp:24:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   24 |     scanf(" %d",&N);
      |     ~~~~~^~~~~~~~~~
Main.cpp:31:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   31 |     scanf(" %d",&sx);
      |     ~~~~~^~~~~~~~~~~
Main.cpp:32:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   32 |     scanf(" %d",&sy);
      |     ~~~~~^~~~~~~~~~~
Main.cpp:37:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   37 |     scanf(" %d",&gx);
      |     ~~~~~^~~~~~~~~~~
Main.cpp:38:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   38 |     scanf(" %d",&gy);
      |     ~~~~~^~~~~~~~~~~
Main.cpp:45:18: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   45 |             scanf(" %c",&lst[i][j]);
      |             ~~~~~^~~~~~~~~~~~~~~~~~
#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...