#include<cstdio>
#include<iostream>
#include<map>
#include<cstring>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
const int N=510;
#define pb push_back
vector<int> vvb[N];
int matchb[N],id[N];
int rk[N][N],matchg[N];
int sta[N],top;
void getmarry(int n){
memset(id,0,sizeof(id));
memset(matchb,0,sizeof(matchb));
memset(matchg,0,sizeof(matchg));
while(1){
top=0;
for(int i=1;i<=n;i++)if(!matchb[i]){
sta[top++]=i;
}
// printf("getmarry%d\n",top);
if(!top)return ;
for(int i=0;i<top;i++){
int b=sta[i];
int g=vvb[b][id[b]];
int b1=matchg[g];
if(!b1||rk[g][b1]>rk[g][b]){
matchb[b1]=0;
matchb[b]=g;
matchg[g]=b;
id[b1]++;
}
else {
id[b]++;
}
}
}
}
稳定婚姻
最新推荐文章于 2019-03-04 19:05:34 发布