稳定婚姻

来源:互联网 发布:手机淘宝试用 编辑:程序博客网 时间:2024/05/01 00:01
#include<cstdio>#include<iostream>#include<map>#include<cstring>#include<string>#include<vector>#include<algorithm>using namespace std;const int N=510;#define pb push_backvector<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]++;            }        }    }}

0 0