首页 > TAG信息列表 > P2055
P2055 [ZJOI2009]假期的宿舍
[ZJOI2009]假期的宿舍 题目描述 学校放假了……有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题。 比如 A 和 B 都是学校的学生,A 要回家,而 C 来看B,C 与 A 不认识。我们假设每个人只能睡和自己直接认识的人的床。那么一个解决方案就是 B 睡 A 的床而 C 睡 B洛谷P2055 [ZJOI2009]假期的宿舍 二分图 匈牙利算法
题目链接:https://www.luogu.com.cn/problem/P2055 本题可以用二分图匹配很好的解决,我们这里是人找床,如果两个人 A 和 B 认识,并且 B 是学校里的学生,那么 A 就可以睡 B 的床,当然 A 也可以睡自己的床。之后用匈牙利算法,找二分图匹配即可。 代码如下 #include <bits/stdc++.h>【最大流,dinic】P2055 [ZJOI2009]假期的宿舍
1 #include<iostream> 2 #include<queue> 3 #include<cstring> 4 using namespace std; 5 6 const int maxn = 60; 7 8 const int INF = 0x3f3f3f3f; 9 int n; 10 int head[maxn << 2 | 1]; 11 int cnt; 12 int d[maxn <&lP2055 [ZJOI2009]假期的宿舍(二分图匹配)
满分做法: 把人向床连边进行二分图匹配即可。 #include<cstring> #include<algorithm> #include<cmath> #include<iostream> #include<cstdio> #include<queue> using namespace std; typedef long long ll; const int maxm=5555; int t,n,ans; int school[maP2055 [ZJOI2009]假期的宿舍(二分图)
这题坑人的是题意,看了题解才搞明白 有一群学生和朋友,朋友会去看某些学生,互相认识的人之间可以互睡床位,问你能不能使得所有人都有床睡觉 人向床连边,如果是在校学生且不回家就向自己连一条边 然后统计非在校学生和在校学生且不回家的人数,最大匹配大于这个人数即OK 然后是多组记得清Luogu P2055 [ZJOI2009]假期的宿舍
这个建图真玄.jpg 简直是常识题 然而我常识不足QwQ 话说题解里的代码在我看来不美观所以抄不了题解 于是debug一个小时QwQ 给萌新一点活路吧 #include<cstdio> #include<cstring> #include<vector> using namespace std; int t,n,in[55],back[55],head[55],vis[55],match[55],cntP2055 [ZJOI2009]假期的宿舍 二分图匹配
题目描述 学校放假了 · · · · · · 有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题。 比如 A 和 B 都是学校的学生,A 要回家,而 C 来看B,C 与 A 不认识。我们假设每个人只能睡和自己直接认识的人的床。那么一个解决方案就是 B 睡 A 的床而 C 睡 B 的