1 条题解
-
1
#include<bits/stdc++.h> using namespace std; int vis[20][20]={0},x,y,m,n; char a[20][20]; int ans=2000000; int judge=0; int dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}}; bool in(int x,int y){ return x>=0&&x<m&&y>=0&&y<n; } void dfs(int x,int y ,int time){ if(a[x][y]'a'){ judge=1; if(time < ans){ ans=time; return ; } } for (int k=0;k<4;k++){ int nx=x+dir[k][0]; int ny=y+dir[k][1]; if(!vis[nx][ny]&&in(nx,ny)&&a[nx][ny]!='#'){ vis[nx][ny]=1; if(a[nx][ny]'@'||a[nx][ny]'a'){ dfs(nx,ny,time+1); vis[nx][ny]=0; } if(a[nx][ny]'x'){ dfs(nx,ny,time+2); vis[nx][ny]=0; } } } } int main(){ cin>>m>>n; char ch; for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ cin>>ch; a[i][j]=ch; if(ch=='r'){ x=i; y=j; vis[i][j]=1; } if(ch=='#'){ vis[i][j]=1; } } } dfs(x,y,0); if(judge==1){ cout<<ans<<endl; } else{ cout<<"Impossible"<<endl; } return 0; }
- 1
信息
- ID
- 1220
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 9
- 标签
- 递交数
- 23
- 已通过
- 3
- 上传者