Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
水过,贴代码#include "iostream" #include "queue" using namespace std; int h, w, step[1000][1000], sx, sy, ex, ey; int direct[1000][1000]; bool map[1000][1000],inq[1000][1000]; int a[5][2]={-1,-1,0,-1,0,1,-1,0,1,0}; //上下左右 queue<int> qx; queue<int> qy; void hua(){ for(int i=0;i<=h+1;i++){ for(int j=0;j<=1+w;j++) printf("%d",direct[i][j]); cout<<endl; } } void bfs(){ while(!qx.empty()){ int x=qx.front(), y=qy.front(); qx.pop(); qy.pop(); inq[y][x]=0; for(int i=1;i<=4;i++) { int nowx=x+a[i][0],nowy=y+a[i][1]; // printf("nowx=%d nowy=%d 终点=%d\n",nowx,nowy,step[ey][ex]); if(nowx<=w+1 && nowx>=0 && nowy<=h+1 && nowy>=0) if( (nowx==ex && nowy==ey) || map[nowy][nowx]==0) { int same=1; if(i==direct[y][x])same--; //如果同向 same=0 i要和xy同向 不是now if(same+step[y][x]<step[nowy][nowx]) { step[nowy][nowx]=same+step[y][x]; direct[nowy][nowx]=i; // hua(); if(inq[nowy][nowx]==0) qx.push(nowx),qy.push(nowy),inq[nowy][nowx]=1; } } } } return ; } int main(){ int n=1; while( ~scanf("%d %d",&w,&h), h||w ){ memset(map,0,sizeof(map)); for(int i=1;i<=h;i++){ getchar(); for(int j=1;j<=w;j++) { char u=getchar(); if(u=='X')map[i][j]=1; } } /* for( i=0;i<=h+1;i++){ for( int j=0;j<=w+1;j++) printf("%d",map[i][j]); cout<<endl; } */ printf("Board #%d:\n",n++); int m=1; while( ~scanf("%d %d %d %d", &sx, &sy, &ex, &ey), sx||sy||ex||ey) { memset(step,100,sizeof(step)); memset(direct,0,sizeof(direct)); memset(inq,0,sizeof(inq)); while(!qx.empty())qx.pop(); while(!qy.empty())qy.pop(); inq[sy][sx]=1; step[sy][sx]=0; qx.push(sx); qy.push(sy); // for(int i=1;i<=4;i++) // step[sy+a[i][0]][sx+a[i][1]]=1; bfs(); if(step[ey][ex]<99999) printf("Pair %d: %d segments.\n",m++,step[ey][ex]); else printf("Pair %d: impossible.\n",m++); } cout<<endl; } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator