hdu-1242

来源:互联网 发布:什么是金蝶软件 编辑:程序博客网 时间:2024/06/07 20:08

dfs

可能有多个朋友 所以从angel搜朋友 遇到朋友就停止


#include <iostream>#include <algorithm>#include <set>#include <map>#include <string.h>#include <queue>#include <sstream>#include <stdio.h>#include <math.h>#include <stdlib.h>using namespace std;const int MAX = 202;int n,m,t;char p[MAX][MAX];int vis[MAX][MAX];int dir[4][2] = {{1,0},{-1,0},{0,1},{0,-1}};int sx,sy;void dfs (int x,int y,int ans ){if ( p[x][y] == 'r' ){if (t > ans)t = ans;return ;}for(int i=0;i<4;i++){int xx = x + dir[i][0];int yy = y + dir[i][1];if (xx >=0 && xx<n && yy>=0 && yy<m && !vis[xx][yy] && p[xx][yy]!='#'){if (p[xx][yy] == '.' || p[xx][yy]=='r' ){vis[xx][yy] = 1;dfs (xx,yy,ans+1);vis[xx][yy] = 0;}else {vis[xx][yy] = 1;dfs (xx,yy,ans+2);vis[xx][yy] = 0;}}}}int main (){while (scanf("%d %d",&n,&m)!=EOF){for(int i=0;i<n;i++){scanf("%s",p[i]);}for(int i=0;i<n;i++){for(int j=0;j<m;j++){if (p[i][j] == 'a'){sx = i;sy = j;break;}}}int ans = 0;t = INT_MAX;dfs (sx,sy,ans);if (t != INT_MAX )printf("%d\n",t);else printf("Poor ANGEL has to stay in the prison all his life.\n");}return 0;}


0 0
原创粉丝点击