bzoj1433[ZJOI2009]假期的宿舍(匈牙利)
1433: [ZJOI2009]假期的宿舍
Time Limit: 10 Sec Memory Limit: 162 MB
Submit: 2544 Solved: 1074
Description

Input

Output

Sample Input
3
1 1 0
0 1 0
0 1 1
1 0 0
1 0 0
Sample Output
HINT
对于30% 的数据满足1 ≤ n ≤ 12。
对于100% 的数据满足1 ≤ n ≤ 50,1 ≤ T ≤ 20。
/*
看这个题,不难发现是二分图,裸的匈牙利。
也很好想到要把人和床分开建图。
但是容易吧不在校的和在校的人分开。其实不该分开,建图是没有任何影响的
有一点要注意,很容易忽略把在校的人和自己的床建边,忘了就WA了!
预处理稍麻烦。
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 101 using namespace std;
int T,n,m,k,ans,cnt1,cnt2;
int bed[maxn],vis[maxn],Link[maxn],Judge[maxn],people[maxn];
int a[maxn][maxn]; inline int insert()
{
int x=,f=;char c=getchar();
while(c>''||c<''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
} inline void first()
{
ans = ;
memset(a,,sizeof(a));
memset(bed,,sizeof(bed));
memset(Judge,,sizeof(Judge));
memset(people,,sizeof(people));
memset(Link,,sizeof(Link));
cnt1=cnt2=;
} bool hungarian(int x)
{
for(int i=;i<=cnt1;i++)
{
if(a[x][bed[i]]&&!vis[bed[i]])
{
vis[bed[i]]=;
if(!Link[bed[i]]||hungarian(Link[bed[i]]))
{
Link[bed[i]]=x;
return true;
}
}
}
return false;
} int main()
{
T=insert();
while(T--)
{
first();
n=insert();
for(int i=;i<=n;i++)
Judge[i]=insert();
for(int i=;i<=n;i++)
{
int tmp;
tmp=insert();
if(Judge[i])
{
if(tmp) bed[++cnt1]=i;//不在校的
else bed[++cnt1]=people[++cnt2]=i;//在校的
}
else people[++cnt2]=i;//来探望的
}
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
a[i][j]=insert();
for(int i=;i<=n;i++)
if(Judge[i]) a[i][i]=;//自己的床
for(int i=;i<=cnt2;i++)
{
memset(vis,,sizeof(vis));
if(hungarian(people[i]))//if后面又打成了分号,罚自己中午多吃一个馒头2333
ans++;
}
if(cnt2>cnt1) ans=-;
if (ans == cnt2)
printf("^_^\n");
else
printf("T_T\n");
}
return ;
}
[
bzoj1433[ZJOI2009]假期的宿舍(匈牙利)的更多相关文章
- 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]假期的宿舍(最大流)
1433: [ZJOI2009]假期的宿舍 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1717 Solved: 754[Submit][Stat ...
- bzoj1433 [ZJOI2009]假期的宿舍 最大流
[ZJOI2009]假期的宿舍 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3429 Solved: 1459[Submit][Status][D ...
- bzoj1433: [ZJOI2009]假期的宿舍(最大二分图匹配)
1433: [ZJOI2009]假期的宿舍 题目:传送门 题解: 这题有点水 跑个二分图匹配就完事了(注意在校生不是一定都互相认识) 代码: #include<cstdio> #inclu ...
- BZOJ1433 [ZJOI2009]假期的宿舍 二分图匹配 匈牙利算法
原文链接http://www.cnblogs.com/zhouzhendong/p/8372785.html 题目传送门 - BZOJ1433 题解 我们理一理题目. 在校的学生,有自己的床,还可以睡 ...
- BZOJ 1433 && Luogu P2055 [ZJOI2009]假期的宿舍 匈牙利算法
刚学了匈牙利正好练练手(我不会说一开始我写错了)(怕不是寒假就讲了可是我不会) 把人看做左部点,床看作右部点 建图:(!!在校相当于有床,不在校相当于没有床 但是要来学校) 1.在校的 不走的人 自己 ...
- bzoj1433: [ZJOI2009]假期的宿舍 [二分图][二分图最大匹配]
Description Input Output Sample Input 1 3 1 1 0 0 1 0 0 1 1 1 0 0 1 0 0 Sample Output ˆ ˆ HINT 对于30% ...
- BZOJ1433[ZJOI2009]假期的宿舍——二分图最大匹配
题目描述 学校放假了······有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题.比如A 和B都是学校的学生,A要回家,而C来看B,C与A不认识.我们假设每个人只能睡和自己直接认 ...
随机推荐
- Python学习笔记(1)对象类型
强制转换字符串函数str 如果我们求2的一百万次方是多少那么我们可以 print(2**1000000) 如果我们要求2的一百万次方有多少位那么我们可以用str函数强制转换成字符串然后len函数计算 ...
- Linux之iptables(五、firewall命令及配置)
firewalld服务 firewalld是CentOS 7.0新推出的管理netfilter的工具 firewalld是配置和监控防火墙规则的系统守护进程.可以实现iptables,ip6table ...
- page对象的使用及常见方法
page对象的使用及常见方法 制作人:全心全意 page对象代表JSP本身,只有在JSP页面内才是合法的.page对象本质上是包含当前Servlet接口引用的变量,可以看作是this关键字的别名. p ...
- Python学习:ModuleNotFoundError: No module named 'pygal.i18n' 的解决方法
最近在学<Python编程:从入门到实践>,16.2小结中 from pygal.i18n import COUNTRIES 获取两个字母的国别码,我用的pygal的版本是2.4.0(终端 ...
- Python面向对象之面向对象基本概念
面向过程和面向对象概念 过程和函数:过程类似于函数,只能执行,但是没有返回结果:函数不仅能执行,还能返回结果. 面向过程和面向对象 基本概念 面向过程-怎么做 把完成某一个需求的所有步骤从头到尾逐步实 ...
- 在此计算机中仅有部分visual studio2010产品已升级到SP1,只有全部升级,产品才能正常运行
先说废话: 本人机子刚装系统Win10 专业版 1709 开始安装vs2010的时候中途报错了,有一个什么驱动不兼容,被我给关闭了,继续安装完,然后找不到vs的启动快捷方式,开始里面没有,于是我开始修 ...
- AOP基础
[Why AOP ?] 1.代码混乱:越来越多的非业务需求(日志和验证等)加入后,原有的业务方法急剧膨胀.每个方法在处理核心逻辑的同时还必须兼顾其他多个关注点. 2.代码分散:以日志需求为例,知识为了 ...
- 九度oj 题目1059:abc
题目1059:abc 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4510 解决:3546 题目描述: 设a.b.c均是0到9之间的数字,abc.bcc是两个三位数,且有:abc+bcc ...
- ci output
ci output类可以将数据存起来,下面这个方法 a 代表的就是存起来的数据 public function(){ $data = array( 'name'=>'alice', ); $th ...
- Win7 如何卸载IE9
1 控制面板,卸载程序 2 查看已安装的更新 3 右击对应更新,选择卸载.