| ||||||||||
| 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 | |||||||||
进入无限WA循环,求大神出个刁钻数据 >﹏<。#include <cstdio>
#include <queue>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <iostream>
using namespace std;
const int maxn = 100;
int x1,y1,x2,y2;
bool visit[4][maxn][maxn];
int w,h;
char maze[maxn][maxn];
int dir[4][2] = {1,0,-1,0,0,1,0,-1};
struct node
{
int x,y;
int seg;
};
int ans;
void bfs()
{
queue<node> Q;
node tmp;
tmp.x = x1;
tmp.y = y1;
tmp.seg = 0;
for(int i = 0; i < 4; i++)
visit[i][x1][y1] = true;
Q.push(tmp);
while( !Q.empty() )
{
tmp = Q.front();
Q.pop();
if( tmp.x == x2 && tmp.y == y2)
{
if( ans > tmp.seg )
ans = tmp.seg;
}
else
{
for(int i = 0; i < 4; i++)
{
int cnt = 1;
while( true )
{
int nx = tmp.x + dir[i][0]*cnt;
int ny = tmp.y + dir[i][1]*cnt;
if( nx >= 0 && ny >= 0 && nx <= h+1 && ny <= w+1
&& maze[nx][ny] != 'X' &&!visit[i][nx][ny] )
{
visit[i][nx][ny] = true;
node hehe;
hehe.x = nx;
hehe.y = ny;
hehe.seg = tmp.seg+1;
Q.push(hehe);
}
else
break;
cnt++;
}
}
}
}
}
int main()
{
freopen("input.txt","r",stdin);
int board = 1;
while( scanf("%d%d",&w,&h) )
{
if( w == 0 && h == 0)
break;
for(int i = 0; i < h+5; i++)
for(int j = 0; j < w+5; j++)
maze[i][j] = ' ';
for(int i = 1; i <= h; i++)
{
getchar();
for(int j = 1; j <= w; j++)
{
scanf("%c",&maze[i][j]);
}
}
int pai = 1;
printf("Board #%d:\n",board++);
while( scanf("%d%d%d%d",&y1,&x1,&y2,&x2) )
{
memset(visit,0,sizeof(visit));
maze[x2][y2] = ' ';
ans = 100000000;
if( x1==0 && y1==0 && x2==0 && y2==0 )
break;
if( (x1 == x2 && abs(y2-y1) == 1) || (y1 == y2 && abs(x2-x1) == 1))
{
printf("Pair %d: 3 segments.\n",pai++);
maze[x2][y2] = 'X';
continue;
}
bfs();
if( ans != 100000000 )
printf("Pair %d: %d segments.\n",pai++,ans);
else
printf("Pair %d: impossible.\n",pai++);
maze[x2][y2] = 'X';
}
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator