1 条题解

  • 1
    @ 2021-12-18 17:37:14

    #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
    上传者