屌(欲海不知吴越山v-前三包了) • 2年前
using namespace std; const int MAXN=1010; const int dx[]= {
0,1,0,-1
} ,dy[]= {
1,0,-1,0
} ; bool v1[MAXN][MAXN],v2[MAXN][MAXN]; void work() {
bool c1=true,c2=true;
int n,x1,y1,d1,x2,y2,d2;
cin>>n>>x1>>y1>>d1>>x2>>y2>>d2;
++x1,++x2,++y1,++y2;
memset(v1,true,sizeof(v1));
memset(v2,true,sizeof(v2));
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
v1[i][j]=v2[i][j]=false;
if(x1==x2&&y1==y2) {
cout<<x1-1<<" "<<y1-1<<endl;
return;
}
v1[x1][y1]=v2[x2][y2]=true;
while(c1||c2) {
if(c1) {
int tx1=x1+dx[d1],ty1=y1+dy[d1];
if(v1[tx1][ty1]) {
d1=(d1+1)%4;
tx1=x1+dx[d1];
ty1=y1+dy[d1];
if(v1[tx1][ty1]) {
c1=false;
} else {
x1=tx1;
y1=ty1;
}
} else {
x1=tx1;
y1=ty1;
}
}
if(c2) {
int tx2=x2+dx[d2],ty2=y2+dy[d2];
if(v2[tx2][ty2]) {
d2=(d2+3)%4;
tx2=x2+dx[d2];
ty2=y2+dy[d2];
if(v2[tx2][ty2]) {
c2=false;
} else {
x2=tx2;
y2=ty2;
}
} else {
x2=tx2;
y2=ty2;
}
}
v1[x1][y1]=v2[x2][y2]=true;
if(x1==x2&&y1==y2) {
cout<<x1-1<<" "<<y1-1<<endl;
return;
}
}
cout<<-1<<endl;
} int main(void) {
int t;
cin>>t;
while(t--) work();
return 0;
}
评论:
请先登录,才能进行评论