#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <string>
#include <math.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
const int N=1024;
int n,boy[N][N],girl[N][N];
int btg[N],gtb[N],cnt[N];
queue<int>q;
int main()
{
int _,i,j,t,u,v;
scanf("%d",&_);
while(_--)
{
scanf("%d",&n);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%d",&boy[i][j]);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
scanf("%d",&t);
girl[i][t]=j;
}
for(i=1;i<=n;i++)
{
btg[i]=-1;
gtb[i]=0;
cnt[i]=1;
}
for(i=1;i<=n;i++)
if(btg[i]==-1)
q.push(i);
while(!q.empty())
{
u=q.front();
q.pop();
t=boy[u][cnt[u]++];
v=gtb[t];
if(v==0)
{
gtb[t]=u;
btg[u]=t;
}
else if(girl[t][v]>girl[t][u])
{
q.push(v);
btg[v]=-1;
gtb[t]=u;
btg[u]=t;
}
else
q.push(u);
}
for(i=1;i<=n;i++)
printf("%d\n",btg[i]);
if(_) printf("\n");
}
return 0;
}
uvalive 3989 Ladies' Choice 稳定婚姻问题
最新推荐文章于 2020-04-19 22:19:53 发布