标签:des blog http io ar os sp for strong
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 122529 | Accepted: 28391 |
Description
Input
Output
Sample Input
9 5 2 1 5 2 1 5 2 1 4 1 2 3 4 0
Sample Output
6 5
Source
#include<iostream> #include<queue> #include<string.h> using namespace std; const int maxn=80; char g[maxn][maxn]; bool vis[maxn][maxn]; int dis[maxn][maxn]; int go[4][2]={{-1,0},{1,0},{0,-1},{0,1}}; int x1,y1,x2,y2; int w,h; void bfs(int x,int y) { queue <int> q; int tmp=x*(w+2)+y; q.push(tmp); vis[x][y]=true; while(!q.empty()) { tmp=q.front(); x=tmp/(w+2); y=tmp%(w+2); q.pop(); if(x==x2 && y==y2) return; for(int i=0;i<4;i++) { int nx=x+go[i][0]; int ny=y+go[i][1]; while(nx>=0 && nx<=h+1 && ny>=0 && ny<=w+1 && !vis[nx][ny] && g[nx][ny]!=‘X‘) { tmp=nx*(w+2)+ny; vis[nx][ny]=true; dis[nx][ny]=dis[x][y]+1; q.push(tmp); nx=nx+go[i][0]; ny=ny+go[i][1]; } } } } int main() { int i; int k=0; while(scanf("%d%d",&w,&h)!=EOF && (w||h)) { memset(g,0,sizeof(g)); for(i=1;i<=h;i++) { getchar(); for(int j=1;j<=w;j++) scanf("%c",&g[i][j]); } printf("Board #%d:\n",++k); int t=0; while(scanf("%d%d%d%d",&y1,&x1,&y2,&x2) && (x1||y1||x2||y2)) { memset(vis,false,sizeof(vis)); memset(dis,0,sizeof(dis)); g[x2][y2]=0; bfs(x1,y1); if(dis[x2][y2]==0) printf("Pair %d: impossible.\n",++t); else printf("Pair %d: %d segments.\n",++t,dis[x2][y2]); g[x2][y2]=‘X‘; //注意还原 } printf("\n"); } return 0; }
标签:des blog http io ar os sp for strong
原文地址:http://www.cnblogs.com/a972290869/p/4101046.html