Tzdin想组织一个圣诞晚会。N位女士和M位男士(M>=N)会被邀请参加这个聚会。在聚会的开始,Tzdin会派发一些写着某位男士信息的卡片给每位女士;每位女士都会收到若干张这种卡片。然后每位女士可以从她收到的卡片里挑选一位男士作为她的伴侣。我们可以认为经过Tzdin的引导,每位女士都一定可以挑选到一位男士作为他的伴侣,而每位男士最多成为1位女士的伴侣。Tzdin想知道的是,有哪些男士,无论女士们怎么选择,最终都一定会拥有伴侣。
著名的稳定婚姻问题
好了不瞎扯,我们来看看怎么用二分图来解决这个问题
我们先做一次最大匹配,让后看看对于每一个被匹配的男士,如果匹配他的女士不能被匹配到除该男士以外的人,那么答案+1,因为匹配总是是确定的,为n,这个条件很重要
匈牙利真是一个优美的算法,真的可以和Dijkstra媲美了
#pragma GCC optimize("O3")#pragma G++ optimize("O3")#include#include #include #include #define N 1010#define clear(t) memset(t,0,sizeof t)using namespace std;vector G[N];int n,m,f[N],g[N],vis[N];bool match(int x){ for(int v,i=0;i