标签:des blog http io os java ar strong for
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 313 Accepted Submission(s): 151
#include <cstdio> #include <cstring> #include <queue> using namespace std; const int maxn=111; char maz[maxn][maxn]; int n,m; int vis[maxn][maxn][27]; const int inf=0x7ffffff; class node{ public: int x,y,t,p; node(){x=y=t=p=0;} node (int tx,int ty,int tt,int tp):x(tx),y(ty),t(tt),p(tp){} bool operator <(const node & n2)const { return t>n2.t; } }; int isdoor(int x,int y){ if(maz[x][y]==‘#‘)return 0; if(maz[x][y]>=‘A‘&&maz[x][y]<=‘Z‘)return maz[x][y]-‘A‘+1; return -1; } int isstone(int x,int y){ if(maz[x][y]>=‘0‘&&maz[x][y]<=‘9‘)return maz[x][y]-‘0‘; return -1; } bool judge(int x,int y){ if(x>=0&&x<n&&y>=0&&y<m)return true; return false; } void printmaz(){ printf("maz %d %d\n",n,m); for(int i=0;i<n;i++)printf("%s\n",maz[i]); } priority_queue <node >que; const int dx[4]={1,-1,0,0},dy[4]={0,0,1,-1}; int bfs(){ while(!que.empty())que.pop(); for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ if(isdoor(i,j)!=-1){ que.push(node(i,j,0,isdoor(i,j))); maz[i][j]=‘*‘; } } } while(!que.empty()){ node tp=que.top();que.pop(); //printf("pack x%d y%d t%d p%d\n",tp.x,tp.y,tp.t,tp.p); for(int i=0;i<4;i++){ int tx=tp.x+dx[i],ty=tp.y+dy[i]; if(judge(tx,ty)){ if(maz[tx][ty]==‘$‘)return tp.t; else if(maz[tx][ty]==‘.‘){ if(vis[tx][ty][tp.p]==-1||vis[tx][ty][tp.p]>tp.t){ vis[tx][ty][tp.p]=tp.t; que.push(node(tx,ty,tp.t,tp.p)); } } else if(isstone(tx,ty)!=-1){ if(vis[tx][ty][tp.p]==-1||vis[tx][ty][tp.p]>tp.t+isstone(tx,ty)){ vis[tx][ty][tp.p]=tp.t+isstone(tx,ty); que.push(node(tx,ty,tp.t+isstone(tx,ty),tp.p)); } if(tp.p>0&&(vis[tx][ty][tp.p-1]==-1||vis[tx][ty][tp.p-1]>tp.t)){ vis[tx][ty][tp.p-1]=tp.t; que.push(node(tx,ty,tp.t,tp.p-1)); } } } } } return inf; } int main(){ while(1){ for(n=0;(gets(maz[n]))&&strcmp(maz[n],"--")!=0&&strlen(maz[n])!=0;n++){} if(strlen(maz[n])!=0)break;//in the end m=strlen(maz[0]); memset(vis,-1,sizeof(vis)); int ans; ans=bfs(); if(ans!=inf)printf("%d\n",ans); else puts("IMPOSSIBLE"); } return 0; }
快速切题 hdu2416 Treasure of the Chimp Island 搜索 解题报告
标签:des blog http io os java ar strong for
原文地址:http://www.cnblogs.com/xuesu/p/3986631.html