hdu4308之BFS (二)

2014-11-23 20:10:35 · 作者: · 浏览: 15
de #include #include #include #include #include #include #define INF 99999999 using namespace std; const int MAX=5000+10; string Map[MAX]; int n,m,v,size,s[MAX][2];//s记录p的位置 int dir[4][2]={0,1,0,-1,1,0,-1,0}; bool mark[MAX]; struct Node{ int x,y,t; Node(){} Node(int X,int Y,int T):x(X),y(Y),t(T){} }start; void CalculateP(){ size=0; for(int i=0;iq; Node oq,next; q.push(start); mark[start.x*m+start.y]=true; while(!q.empty()){ oq=q.front(); q.pop(); for(int i=0;i<4;++i){ next=Node(oq.x+dir[i][0],oq.y+dir[i][1],oq.t);; if(next.x<0 || next.y<0 || next.x>
=n || next.y>=m)continue; if(mark[next.x*m+next.y] || Map[next.x][next.y] == '#')continue; mark[next.x*m+next.y]=true; if(Map[next.x][next.y] == 'C')return next.t; if(Map[next.x][next.y] == 'P'){ int len=q.size(); for(int j=0;j>n>>m>>v){ for(int i=0;i>Map[i]; CalculateP(); int temp=BFS(); if(temp<0)cout<<"Damn teoy!"<