zoukankan      html  css  js  c++  java
  • 稳定婚姻问题

    Ladies' Choice

     UVALive - 3989

    大白书p352

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 const int maxn=1010;
     4 int pref[maxn][maxn],order[maxn][maxn],nex[maxn];
     5 int fhusband[maxn],fwife[maxn];
     6 queue<int> q;  //未订婚的男士队列
     7 
     8 void engage(int man,int woman)
     9 {
    10     int m=fhusband[woman];
    11     if(m)   //女士现有未婚夫m
    12     {
    13         fwife[m]=0;  //抛弃m
    14         q.push(m);
    15     }
    16     fwife[man]=woman;
    17     fhusband[woman]=man;
    18 }
    19 
    20 int main()
    21 {
    22     int t;
    23     scanf("%d",&t);
    24     while(t--)
    25     {
    26         int n;
    27         scanf("%d",&n);
    28         for(int i=1;i<=n;i++)
    29         {
    30             for(int j=1;j<=n;j++)
    31                 scanf("%d",&pref[i][j]);  //编号为i的男士第j喜欢的人
    32             nex[i]=1;   //接下来向排名为1的女士求婚
    33             fwife[i]=0; //没有未婚妻
    34             q.push(i);
    35         }
    36         for(int i=1;i<=n;i++)
    37         {
    38             int x;
    39             for(int j=1;j<=n;j++)
    40             {
    41                 scanf("%d",&x);
    42                 order[i][x]=j;  //在编号为i的女士心中,编号为x的男士的排名为j
    43             }
    44             fhusband[i]=0;  //没有未婚夫
    45         }
    46         while(!q.empty())
    47         {
    48             int man=q.front();
    49             q.pop();
    50             int woman=pref[man][nex[man]++];  //下一个求婚对象
    51             if(!fhusband[woman]) engage(man,woman); //没有求婚对象,直接订婚
    52             else if(order[woman][man]<order[woman][fhusband[woman]]) engage(man,woman); //代替女士的现任未婚夫
    53             else q.push(man); //下次再来
    54         }
    55         while(!q.empty()) q.pop();
    56         for(int i=1;i<=n;i++) printf("%d
    ",fwife[i]);
    57         if(t) puts("");
    58     }
    59     return 0;
    60 }
    LRJ
  • 相关阅读:
    团队协议
    C++ 多继承和虚继承的内存布局(转)
    轻量级的.Net ORM框架介绍
    EF下CodeFirst、DBFirst与ModelFirst分析
    JDK方式
    JSON
    事务的ACID特性
    数据库查询
    Assets
    内部文件存储
  • 原文地址:https://www.cnblogs.com/yijiull/p/7228945.html
Copyright © 2011-2022 走看看