ZJOI2009 假期的宿舍

2022-05-19 10:26:23 字數 798 閱讀 1989

題目:洛谷p2055、bzoj1433、codevs2347。

題目大意:有n個人,有些人是學生,有些人是來看學生的(不是學生)。學生有床,而非學生沒有(廢話!)。有些學生回家,有些學生晚上住校,來看學生的人要住在學校裡。

現在有一些認識的關係,規定每個要在學校睡覺的人只會睡在自己認識的人的床上,問能否使所有人都有床睡?

解題思路:人匹配床,很明顯是二分圖匹配。

先把住校的學生和自己的床連邊,然後把所有要睡在學校的人和他認識的人的床(如果有)連邊。

然後匈牙利亂搞即可。

c++ code:

#include#include#includeint n,dy[55];

bool b[55][55],vis[55];

struct xingxia[55];

int dfs(int u)

} return 0;

}int main()

for(int i=1;i<=n;++i)

for(int j=1;j<=n;++j)

int match=0;

memset(dy,0,sizeof dy);

for(int i=1;i<=n;++i)

if(!a[i].hj)

if(match==bed)

puts("^_^");else

puts("t_t");

} return 0;

}

ZJOI2009 假期的宿舍

題目描述 學校放假了 有些同學回家了,而有些同學則有以前的好朋友來探訪,那麼住宿就是乙個問題。比如 a 和 b 都是學校的學生,a 要回家,而 c 來看b,c 與 a 不認識。我們假設每個人只能睡和自己直接認識的人的床。那麼乙個解決方案就是 b 睡 a 的床而 c 睡 b 的床。而實際情況可能非常複...

ZJOI2009 假期的宿舍

這道題分析下就會發現是乙個二分圖匹配。將在校 包括來校訪友 和床單構成圖,判斷最大匹配數是否為總在校人數即可。這裡用的是 km 演算法。1 include 2 3using namespace std 45 define re register 6 define rep i,a,b for re i...

ZJOI2009 假期的宿舍

學校放假了 有些同學回家了,而有些同學則有以前的好朋友來探訪,那麼住宿就是乙個問題。比如 a 和 b 都是學校的學生,a 要回家,而 c 來看b,c 與 a 不認識。我們假設每個人只能睡和自己直接認識的人的床。那麼乙個解決方案就是 b 睡 a 的床而 c 睡 b 的床。而實際情況可能非常複雜,有的人...