RT,稳定婚姻系统裸题,可是我连板子都打不对
#include<bits/stdc++.h>
using namespace std;
int pre[1005][1005],ord[1005][1005];
int nxt[1005],hus[1005],wife[1005];
int t,n,x;
queue<int>q;
void beengaged(int male,int remale){
int tmp=hus[remale];
if(tmp!=0){
wife[tmp]=0;
q.push(tmp);
}
wife[male]=remale;
hus[remale]=male;
}
int main(){
cin>>t;
while(t--){
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>pre[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>x;
ord[i][x]=j;
}
nxt[i]=1;
wife[i]=0;
hus[i]=0;
q.push(i);
}
while(!q.empty()){
int male=q.front();
q.pop();
int remale=pre[male][++nxt[male]];
if(!hus[remale]||ord[remale][male]<ord[remale][hus[remale]]){
beengaged(male,remale);
}else{
q.push(male);
}
}
for(int i=1;i<=n;i++){
cout<<wife[i]<<"\n";
}
}
return 0;
}