Submission #76764327
Source Code Expand
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int h,w;
vector<string> g;
vector<int> comp;
vector<vector<pair<int,ll>>> node;
int sx,sy,gx,gy;
int dx[4]={1,-1,0,0};
int dy[4]={0,0,1,-1};
inline int id(int x,int y){
return x*w+y;
}
inline void dfs(int x,int y,int c){
if(x<0||x>=h||y<0||y>=w) return;
if(g[x][y]!='V') return;
int p=id(x,y);
if(comp[p]!=-1) return;
comp[p]=c;
for(int d=0;d<4;++d) dfs(x+dx[d],y+dy[d],c);
}
signed main(){
scanf("%d%d",&h,&w);
g.resize(h);
char tmp[200005];
for(int i=0;i<h;++i){
scanf("%s",tmp);
g[i]=string(tmp);
for(int j=0;j<w;++j){
if(g[i][j]=='S') sx=i,sy=j;
if(g[i][j]=='G') gx=i,gy=j;
}
}
int N=h*w;
comp.assign(N,-1);
int cc=0;
for(int i=0;i<h;++i){
for(int j=0;j<w;++j){
if(g[i][j]=='V'&&comp[id(i,j)]==-1){
dfs(i,j,cc);
cc++;
}
}
}
node.resize(N+cc);
for(int i=0;i<h;++i){
for(int j=0;j<w;++j){
if(g[i][j]=='X') continue;
int u=id(i,j);
for(int d=0;d<4;++d){
int ni=i+dx[d],nj=j+dy[d];
if(ni<0||ni>=h||nj<0||nj>=w) continue;
if(g[ni][nj]=='X') continue;
int v=id(ni,nj);
ll wg=1;
if(g[ni][nj]=='V') wg=2;
node[u].push_back({v,wg});
}
if(g[i][j]=='V'){
int c=comp[u];
node[u].push_back({N+c,0});
node[N+c].push_back({u,0});
}
}
}
vector<ll> dist(N+cc,1e18);
priority_queue<pair<ll,int>,vector<pair<ll,int>>,greater<>> pq;
int start=id(sx,sy);
dist[start]=0;
pq.push({0,start});
while(!pq.empty()){
auto [d,u]=pq.top(); pq.pop();
if(d!=dist[u]) continue;
for(auto [v,w]:node[u]){
if(dist[v]>d+w){
dist[v]=d+w;
pq.push({dist[v],v});
}
}
}
int goal=id(gx,gy);
if(dist[goal]>=1e18) printf("NO\n");
else printf("%lld\n",dist[goal]);
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | E - Cave Exploration and Underground Waterways |
| User | Chen_Zhen_DY |
| Language | C++23 (GCC 15.2.0) |
| Score | 433 |
| Code Size | 2279 Byte |
| Status | AC |
| Exec Time | 55 ms |
| Memory | 56044 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 433 / 433 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | sample01.txt, sample02.txt, sample03.txt, sample04.txt, sample05.txt |
| All | sample01.txt, sample02.txt, sample03.txt, sample04.txt, sample05.txt, in01.txt, in02.txt, in03.txt, in04.txt, in05.txt, in06.txt, in07.txt, in08.txt, in09.txt, in10.txt, in11.txt, in12.txt, in13.txt, in14.txt, in15.txt, in16.txt, in17.txt, in18.txt, in19.txt, in20.txt, in21.txt, in22.txt, in23.txt, in24.txt, in25.txt, in26.txt, in27.txt, in28.txt, in29.txt, in30.txt, in31.txt, in32.txt, in33.txt, in34.txt, in35.txt, in36.txt, in37.txt, in38.txt, in39.txt, in40.txt, in41.txt, in42.txt, in43.txt, in44.txt, in45.txt, in46.txt, in47.txt, in48.txt, in49.txt, in50.txt, in51.txt, in52.txt, in53.txt, in54.txt, in55.txt, in56.txt, in57.txt, in58.txt, in59.txt, in60.txt, in61.txt, in62.txt, in63.txt, in64.txt, in65.txt, in66.txt, in67.txt, in68.txt, in69.txt, in70.txt, in71.txt, in72.txt, in73.txt, in74.txt, in75.txt, in76.txt, in77.txt, in78.txt, in79.txt, in80.txt, in81.txt, in82.txt, in83.txt, in84.txt, in85.txt, in86.txt, in87.txt, in88.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| in01.txt | AC | 1 ms | 3872 KiB |
| in02.txt | AC | 1 ms | 3872 KiB |
| in03.txt | AC | 1 ms | 3900 KiB |
| in04.txt | AC | 1 ms | 4032 KiB |
| in05.txt | AC | 1 ms | 3868 KiB |
| in06.txt | AC | 1 ms | 4020 KiB |
| in07.txt | AC | 1 ms | 3900 KiB |
| in08.txt | AC | 1 ms | 3960 KiB |
| in09.txt | AC | 1 ms | 4008 KiB |
| in10.txt | AC | 1 ms | 4016 KiB |
| in11.txt | AC | 49 ms | 26756 KiB |
| in12.txt | AC | 49 ms | 32472 KiB |
| in13.txt | AC | 15 ms | 17408 KiB |
| in14.txt | AC | 16 ms | 19884 KiB |
| in15.txt | AC | 11 ms | 14528 KiB |
| in16.txt | AC | 51 ms | 39096 KiB |
| in17.txt | AC | 23 ms | 27712 KiB |
| in18.txt | AC | 28 ms | 32616 KiB |
| in19.txt | AC | 49 ms | 55780 KiB |
| in20.txt | AC | 1 ms | 4020 KiB |
| in21.txt | AC | 38 ms | 34948 KiB |
| in22.txt | AC | 49 ms | 55740 KiB |
| in23.txt | AC | 11 ms | 15464 KiB |
| in24.txt | AC | 48 ms | 47936 KiB |
| in25.txt | AC | 46 ms | 38908 KiB |
| in26.txt | AC | 1 ms | 4016 KiB |
| in27.txt | AC | 1 ms | 3976 KiB |
| in28.txt | AC | 1 ms | 4020 KiB |
| in29.txt | AC | 1 ms | 3960 KiB |
| in30.txt | AC | 1 ms | 3900 KiB |
| in31.txt | AC | 1 ms | 3868 KiB |
| in32.txt | AC | 1 ms | 3996 KiB |
| in33.txt | AC | 1 ms | 3920 KiB |
| in34.txt | AC | 1 ms | 3988 KiB |
| in35.txt | AC | 1 ms | 3872 KiB |
| in36.txt | AC | 1 ms | 4008 KiB |
| in37.txt | AC | 1 ms | 3944 KiB |
| in38.txt | AC | 1 ms | 4000 KiB |
| in39.txt | AC | 1 ms | 4032 KiB |
| in40.txt | AC | 1 ms | 4120 KiB |
| in41.txt | AC | 1 ms | 4120 KiB |
| in42.txt | AC | 1 ms | 4016 KiB |
| in43.txt | AC | 1 ms | 3960 KiB |
| in44.txt | AC | 22 ms | 26356 KiB |
| in45.txt | AC | 17 ms | 22280 KiB |
| in46.txt | AC | 51 ms | 55948 KiB |
| in47.txt | AC | 43 ms | 43460 KiB |
| in48.txt | AC | 40 ms | 37268 KiB |
| in49.txt | AC | 40 ms | 37428 KiB |
| in50.txt | AC | 49 ms | 48012 KiB |
| in51.txt | AC | 47 ms | 48024 KiB |
| in52.txt | AC | 41 ms | 43396 KiB |
| in53.txt | AC | 49 ms | 56044 KiB |
| in54.txt | AC | 31 ms | 26344 KiB |
| in55.txt | AC | 49 ms | 55940 KiB |
| in56.txt | AC | 38 ms | 37280 KiB |
| in57.txt | AC | 38 ms | 36996 KiB |
| in58.txt | AC | 40 ms | 38564 KiB |
| in59.txt | AC | 39 ms | 38432 KiB |
| in60.txt | AC | 24 ms | 29300 KiB |
| in61.txt | AC | 26 ms | 28600 KiB |
| in62.txt | AC | 55 ms | 38780 KiB |
| in63.txt | AC | 42 ms | 41072 KiB |
| in64.txt | AC | 1 ms | 4008 KiB |
| in65.txt | AC | 1 ms | 3868 KiB |
| in66.txt | AC | 1 ms | 3960 KiB |
| in67.txt | AC | 1 ms | 4020 KiB |
| in68.txt | AC | 1 ms | 4020 KiB |
| in69.txt | AC | 1 ms | 4120 KiB |
| in70.txt | AC | 1 ms | 3976 KiB |
| in71.txt | AC | 1 ms | 3988 KiB |
| in72.txt | AC | 1 ms | 3868 KiB |
| in73.txt | AC | 1 ms | 3988 KiB |
| in74.txt | AC | 1 ms | 4016 KiB |
| in75.txt | AC | 1 ms | 3992 KiB |
| in76.txt | AC | 1 ms | 3872 KiB |
| in77.txt | AC | 1 ms | 3868 KiB |
| in78.txt | AC | 1 ms | 3872 KiB |
| in79.txt | AC | 1 ms | 3960 KiB |
| in80.txt | AC | 1 ms | 3992 KiB |
| in81.txt | AC | 1 ms | 4008 KiB |
| in82.txt | AC | 50 ms | 48304 KiB |
| in83.txt | AC | 43 ms | 43440 KiB |
| in84.txt | AC | 46 ms | 46320 KiB |
| in85.txt | AC | 31 ms | 33736 KiB |
| in86.txt | AC | 40 ms | 37428 KiB |
| in87.txt | AC | 48 ms | 48196 KiB |
| in88.txt | AC | 31 ms | 30568 KiB |
| sample01.txt | AC | 1 ms | 3920 KiB |
| sample02.txt | AC | 1 ms | 3900 KiB |
| sample03.txt | AC | 1 ms | 3920 KiB |
| sample04.txt | AC | 1 ms | 3976 KiB |
| sample05.txt | AC | 1 ms | 3920 KiB |