zoj2411-Link Link Look(WA)

来源:互联网 发布:免费淘宝客推广软件 编辑:程序博客网 时间:2024/05/16 18:28

个人认为错的例子都测试过没问题,还找不出哪里有问题= =但是就是wa,对比了ac代码一样的输入输出...

#include<iostream>#include<queue>#include<cstring>using namespace std;const int pmove[4][2]={{0,1},{0,-1},{-1,0},{1,0}};//移动int N,M;int maze[102][102],tmaze[102][102];struct node{int dir;int x,y;int turns;};bool BFS(int y1,int x1,int y2,int x2){if(tmaze[y1][x1]!=tmaze[y2][x2]||tmaze[y1][x1]==0)return false;queue<node> que;node now,temp;tmaze[y1][x1]=-1;now.x=x1;now.y=y1;now.turns=0;now.dir=-1;que.push(now);while(!que.empty()){temp=que.front();que.pop();for(int v=0;v<4;v++){now.x=temp.x+pmove[v][0];now.y=temp.y+pmove[v][1];now.turns=temp.turns;now.dir=temp.dir;if(now.x<0||now.y<0||now.x>M+1||now.y>N+1)continue;if(now.dir!=v)now.turns++;now.dir=v;if(now.dir>3)continue;if(now.y==y2&&now.x==x2){return true;}if(tmaze[now.y][now.x]==0){tmaze[now.y][now.x]=-1;que.push(now);}}}return false;}int main(){while(cin>>N>>M&&N&&M){for(int i=0;i<=N+1;i++)for(int j=0;j<=M+1;j++){maze[i][j]=0;tmaze[i][j]=0;}for(int i=1;i<=N;i++)for(int j=1;j<=M;j++){cin>>maze[i][j];tmaze[i][j]=maze[i][j];}int cnum,count=0;cin>>cnum;while(cnum--){int x1,y1,x2,y2;cin>>y1>>x1>>y2>>x2;if(y1==y2&&x1==x2)continue;if(BFS(y1,x1,y2,x2)){count+=2;maze[y1][x1]=0;maze[y2][x2]=0;}for(int i=0;i<=N+1;i++){for(int j=0;j<=M+1;j++)cout<<tmaze[i][j]<<"   ";cout<<endl;}for(int i=0;i<=N+1;i++)for(int j=0;j<=M+1;j++)tmaze[i][j]=maze[i][j];}cout<<count<<endl;}return 0;}