我这份代码没有判断 a 喜欢 b 但是 b 不喜欢 a 的情况,但是依然通过了本题。
建议加强数据。
以下是建环部分:
for(int i=1,p=1;;++i){
a[i]=p,b[i]=i;
if(i==n) break;
if(book[p]||!(f[p][0]||f[p][1])){
cout<<-1;
return 0;
}
book[p]=1;
if(f[p][0]){
int tmp=f[p][0];
if(f[tmp][0]==p) f[tmp][0]=0;
else f[tmp][1]=0;
f[p][0]=0,p=tmp;
}
else if(f[p][1]){
int tmp=f[p][1];
if(f[tmp][0]==p) f[tmp][0]=0;
else f[tmp][1]=0;
f[p][1]=0,p=tmp;
}
else{
cout<<-1;
return 0;
}
}