제출 #768820

#제출 시각아이디문제언어결과실행 시간메모리
7688201075508020060209tcPatkice II (COCI21_patkice2)C++14
110 / 110
1495 ms184676 KiB
#include<bits/stdc++.h> using namespace std; #define int long long #define X first #define Y second int n;int m; int ok(int i,int j){ if(i>=1&&i<=n&&j>=1&&j<=m){return 1;} return 0; } int dir[5]={0,1,0,-1,0}; char dc[5]={'!','>','v','<','^'}; string gr[2010]; int dis[2010][2010]; int vis[2010][2010]; pair<int,int>frm[2010][2010]; int fc[2010][2010]; signed main(){ //cin.tie(0); //ios_base::sync_with_stdio(0); cin>>n>>m; for(int i=1;i<=n;i++){ cin>>gr[i]; gr[i]="*"+gr[i]; } //deque<pair<int,int>>q; priority_queue<pair<int,pair<int,int>>,vector<pair<int,pair<int,int> >>,greater<pair<int,pair<int,int> >>>q; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ dis[i][j]=1e9; if(gr[i][j]=='o'){ q.push({0,{i,j}}); dis[i][j]=0; } } } while(q.size()){ int nwx=q.top().second.first; int nwy=q.top().second.second; q.pop(); if(vis[nwx][nwy]){continue;} vis[nwx][nwy]=1; if(gr[nwx][nwy]=='o'){ for(int i=1;i<=4;i++){ int x=nwx+dir[i-1]; int y=nwy+dir[i]; if(!ok(x,y)||dis[x][y]<dis[nwx][nwy]){continue;} dis[x][y]=0; q.push({0,{x,y}}); frm[x][y]={nwx,nwy}; fc[x][y]=i; } continue; } for(int i=1;i<=4;i++){ int x=nwx+dir[i-1]; int y=nwy+dir[i]; int w=dis[nwx][nwy]; if(gr[nwx][nwy]!=dc[i]){ w++; } if(!ok(x,y)||dis[x][y]<w||vis[x][y]){continue;} if(gr[x][y]==dc[i]){ dis[x][y]=w; q.push({dis[x][y],{x,y}}); frm[x][y]={nwx,nwy}; fc[x][y]=i; }else{ dis[x][y]=w; q.push({dis[x][y],{x,y}}); frm[x][y]={nwx,nwy}; fc[x][y]=i; } } } /* for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cout<<dis[i][j]<<" "; }cout<<endl; } */ int nwx;int nwy; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(gr[i][j]=='x'){ cout<<dis[i][j]<<endl; nwx=i;nwy=j; } } } while(gr[nwx][nwy]!='o'){ char c=dc[fc[nwx][nwy]]; int x=frm[nwx][nwy].first; int y=frm[nwx][nwy].second; nwx=x;nwy=y; if(gr[x][y]=='o'){break;} gr[nwx][nwy]=c; } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cout<<gr[i][j]; }cout<<endl; } }

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

Main.cpp: In function 'int main()':
Main.cpp:94:18: warning: 'nwy' may be used uninitialized in this function [-Wmaybe-uninitialized]
   94 | while(gr[nwx][nwy]!='o'){
      |                  ^
Main.cpp:97:9: warning: 'nwx' may be used uninitialized in this function [-Wmaybe-uninitialized]
   97 |     int y=frm[nwx][nwy].second;
      |         ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...