1433: [ZJOI2009]假期的宿舍
1433: [ZJOI2009]假期的宿舍
分析:
直接网络流,看是否满足即可。
S向每个有需要的人连边,有床的向T连边,认识的人之间互相连边。
代码:
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
#include<cmath>
#include<cctype>
#include<set>
#include<queue>
#include<vector>
#include<map>
using namespace std;
typedef long long LL; inline int read() {
int x=,f=;char ch=getchar();for(;!isdigit(ch);ch=getchar())if(ch=='-')f=-;
for(;isdigit(ch);ch=getchar())x=x*+ch-'';return x*f;
} const int N = , INF = 1e9;
struct Edge { int to, nxt, cap; } e[];
int head[N], dis[N], cur[N], q[N], a[N];
int S, T, En; inline void add_edge(int u,int v,int w) {
++En; e[En].to = v, e[En].cap = w, e[En].nxt = head[u]; head[u] = En;
++En; e[En].to = u, e[En].cap = , e[En].nxt = head[v]; head[v] = En;
}
bool bfs() {
for (int i = ; i <= T; ++i) cur[i] = head[i], dis[i] = -;
int L = , R = ;
q[++R] = S; dis[S] = ;
while (L <= R) {
int u = q[L ++];
for (int i = head[u]; i; i = e[i].nxt) {
int v = e[i].to;
if (dis[v] == - && e[i].cap > ) {
dis[v] = dis[u] + ;
q[++R] = v;
if (v == T) return true;
}
}
}
return false;
}
int dfs(int u,int flow) {
if (u == T) return flow;
int used = ;
for (int &i = cur[u]; i; i = e[i].nxt) {
int v = e[i].to;
if (dis[v] == dis[u] + && e[i].cap > ) {
int tmp = dfs(v, min(flow - used, e[i].cap));
if (tmp > ) {
used += tmp, e[i].cap -= tmp, e[i ^ ].cap += tmp;
if (used == flow) break;
}
}
}
if (used != flow) dis[u] = -;
return used;
}
int dinic() {
int ans = ;
while (bfs()) ans += dfs(S, INF);
return ans;
}
void solve() {
En = ;memset(head, , sizeof(head));
int n = read(), tot = ;
S = , T = n + n + ;
for (int i = ; i <= n; ++i) {
a[i] = read();
if (a[i]) add_edge(i + n, T, );
}
for (int i = ; i <= n; ++i) {
int x = read();
if ((a[i] && !x) || !a[i]) add_edge(S, i, ), tot ++;
}
for (int i = ; i <= n; ++i)
for (int j = ; j <= n; ++j) {
int x = read();
if (x || i == j) add_edge(i, j + n, );
}
if (dinic() == tot) puts("^_^");
else puts("T_T");
}
int main() {
for (int Case = read(); Case --; solve());
return ;
}
1433: [ZJOI2009]假期的宿舍的更多相关文章
- bzoj 1433: [ZJOI2009]假期的宿舍 -- 最大流
1433: [ZJOI2009]假期的宿舍 Time Limit: 10 Sec Memory Limit: 162 MB Description Input Output Sample Input ...
- bzoj 1433: [ZJOI2009]假期的宿舍
1433: [ZJOI2009]假期的宿舍 Description Input Output Sample Input 1 3 1 1 0 0 1 0 0 1 1 1 0 0 1 0 0 Sample ...
- BZOJ 1433 [ZJOI2009]假期的宿舍(网络流)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1433 [题目大意] 在校学生有自己的床,外校的则没有,如果两个同学相互认识,则可以借用 ...
- 1433. [ZJOI2009]假期的宿舍【二分图】
Description 学校放假了······有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题.比如A 和B都是学校的学生,A要回家,而C来看B,C与A不认识.我们假设每个人只能 ...
- bzoj 1433: [ZJOI2009]假期的宿舍【匈牙利算法】
i能睡j床的连边(i,j),跑最大匹配或者最大流,然后看看人数能不能对上总数即可 #include<iostream> #include<cstdio> #include< ...
- 洛谷 2055 BZOJ 1433 [ZJOI2009]假期的宿舍
[题解] 既然是一人对应一床,那么显然可以用二分图匹配来做.俩人认识的话,如果其中一个a是在校学生,另一个b不回家,b就可以向a的床连边(a,b当然也可以是同一个人). 然后如果最大匹配数大于等于需要 ...
- BZOJ1433 ZJOI2009 假期的宿舍 二分图匹配
1433: [ZJOI2009]假期的宿舍 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2375 Solved: 1005[Submit][Sta ...
- bzoj1433: [ZJOI2009]假期的宿舍
1433: [ZJOI2009]假期的宿舍 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2286 Solved: 969[Submit][Stat ...
- bzoj1433:[ZJOI2009]假期的宿舍
明显的二分图最大匹配. #include<cstdio> #include<cstring> #include<cctype> #include<algori ...
随机推荐
- springMVC入门-07
删除功能实现,对应controller类中的代码如下所示: @RequestMapping(value="/{username}/delete",method=RequestMet ...
- C# 调用WebService服务
方 法 一 : 选择项目,右键添加服务引用,输入服务地址,如图: 点击确定跳转到如下界面: 调用 接口: ServiceReference1.ImportDataServiceClient sr = ...
- Mysql压缩解决方案
提到mysql压缩相关的内容,我们能想到的可能是如下几种和压缩相关的场景: 1.客户端和服务器之间传输的数据量太大,需要进行压缩,节约带宽 2.mysql某个列的数据量大,只针对某个列的数据压缩 3. ...
- 卸载oracle 10g
1.开始->设置->控制面板->管理工具->服务——> 停止所有Oracle服务.(没有起动的就不用停用了)2.开始->程序->Oracle - OraD ...
- 标准的Flask启动文件
最近有一些同学问了我一些项目结构的问题 所以今天给大家专门讲解 解耦后的项目 目录我会分为两种方式:一种是普通解耦 一种是多mvc解耦 首先 我没先建立我们程序的文件夹并且在这个文件夹内写一个和这个文 ...
- 导出AD用户所属组,查询AD用户(aduser)
$ous="admin","bladmin","af","dd"for($i=0;$i -lt 2;$i++) { $o ...
- Django学习---抽屉热搜榜分析【all】
Python实例---抽屉热搜榜前端代码分析 Python实例---抽屉后台框架分析 Python学习---抽屉框架分析[点赞功能分析] Python学习---抽屉框架分析[数据库设计分析]18031 ...
- 更改Request Parameters中的值
1. 定义ParameterRequestWrapper 继承HttpServletRequestWrapper public class ParameterRequestWrapper extend ...
- arcgis 10.1 导入数据到oracle 发布地图服务
机器配置说明 数据库服务器 系统:linux 软件:oracle 11G 64位 Arcgis server服务器 系统:win7 专业版 软件:arcgis server 10.1.win64_11 ...
- Python全栈开发:list 、tuple以及dict的总结
总结: 列表:增:append(),inset(),extend() 删:pop(),remove(),clear(),del 改:a.通过指定元素和切片重新赋值.b.可以使用repelace替换列表 ...