二分图 洛谷P2055 [ZJOI2009]假期的宿舍
[ZJOI2009]假期的宿舍
题目描述
学校放假了 · · · · · · 有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题。比如 A 和 B 都是学校的学生,A 要回家,而 C 来看B,C 与 A 不认识。我们假设每个人只能睡和自己直接认识的人的床。那么一个解决方案就是 B 睡 A 的床而 C 睡 B 的床。而实际情况可能非常复杂,有的人可能认识好多在校学生,在校学生之间也不一定都互相认识。我们已知一共有 n 个人,并且知道其中每个人是不是本校学生,也知道每个本校学生是否回家。问是否存在一个方案使得所有不回家的本校学生和来看他们的其他人都有地方住。
输入输出格式
输入格式:
第一行一个数 T 表示数据组数。接下来 T 组数据,每组数据第一行一个数n 表示涉及到的总人数。接下来一行 n 个数,第 i 个数表示第 i 个人是否是在校学生 (0 表示不是,1 表示是)。再接下来一行 n 个数,第 i 个数表示第 i 个人是否回家 (0 表示不会家,1 表示回家,注意如果第 i 个人不是在校学生,那么这个位置上的数是一个随机的数,你应该在读入以后忽略它)。接下来 n 行每行 n 个数,第 i 行第 j 个数表示 i 和 j 是否认识 (1 表示认识,0 表示不认识,第 i 行 i 个的值为 0,但是显然自己还是可以睡自己的床),认识的关系是相互的。
输出格式:
对于每组数据,如果存在一个方案则输出 “ ˆ_ˆ ”(不含引号) 否则输出“T_T”(不含引号)。(注意输出的都是半角字符,即三个符号的 ASCII 码分别为94,84,95)
输入输出样例
1 3 1 1 0 0 1 0 0 1 1 1 0 0 1 0 0
ˆ_ˆ
说明
对于 30% 的数据满足 1 ≤ n ≤ 12。
对于 100% 的数据满足 1 ≤ n ≤ 50,1 ≤ T ≤ 20。
多组数据!!!
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 int t,n; 7 bool stu[60],back[60],in[60][60],used[60]; 8 int point[60]; 9 bool dfs(int x){ 10 for(int i=1;i<=n;i++){ 11 if(stu[i]&&in[x][i]&&!used[i]){ 12 used[i]=1; 13 if(point[i]==-1||dfs(point[i])){ 14 point[i]=x; 15 return 1; 16 } 17 } 18 } 19 return 0; 20 } 21 bool work(){ 22 memset(point,-1,sizeof(point)); 23 for(int i=1;i<=n;i++){ 24 memset(used,0,sizeof(used)); 25 if((!stu[i]||!back[i])&&!dfs(i)) return 0; 26 } 27 return 1; 28 } 29 int main(){ 30 scanf("%d",&t); 31 for(int i=1;i<=t;i++){ 32 memset(stu,0,sizeof(stu)); 33 memset(back,0,sizeof(back)); 34 memset(in,0,sizeof(in)); 35 scanf("%d",&n); 36 for(int j=1;j<=n;j++) scanf("%d",&stu[j]); 37 for(int j=1;j<=n;j++){ 38 scanf("%d",&back[j]); 39 if(!stu[j]) back[j]=1; 40 } 41 for(int j=1;j<=n;j++){ 42 for(int k=1;k<=n;k++) scanf("%d",&in[j][k]); 43 if(stu[j]) in[j][j]=1; 44 } 45 printf("%s\n",work()?"^_^":"T_T"); 46 } 47 return 0; 48 }
转载于:https://www.cnblogs.com/sdfzxh/p/6906509.html
二分图 洛谷P2055 [ZJOI2009]假期的宿舍相关推荐
- 洛谷P2055 [ZJOI2009]假期的宿舍 题解
题目链接: https://www.luogu.org/problemnew/show/P2055 分析: 这道题比较简单,二分图的练习题(当然最大流同理). 易得我们可以将人放在一侧,床放在一侧. ...
- 洛谷2055 [ZJOI2009]假期的宿舍
题目描述 学校放假了 · · · · · · 有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题.比如 A 和 B 都是学校的学生,A 要回家,而 C 来看B,C 与 A 不认识. ...
- P2055 [ZJOI2009]假期的宿舍(二分图匹配)
题目描述 学校放假了 · · · · · · 有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题. 比如 A 和 B 都是学校的学生,A 要回家,而 C 来看B,C 与 A 不认识 ...
- P2055 [ZJOI2009]假期的宿舍
有点烧脑... 这道题是求二分图完美匹配.没看请题意还不知道是求完美匹配,结果爆零. 人一共分三种: 在校学生 && 回家.这类人拥有一个床,但是不睡. 在校学生 && ...
- BZOJ 1433 Luogu P2055 [ZJOI2009]假期的宿舍 匈牙利算法
刚学了匈牙利正好练练手(我不会说一开始我写错了)(怕不是寒假就讲了可是我不会) 把人看做左部点,床看作右部点 建图:(!!在校相当于有床,不在校相当于没有床 但是要来学校) 1.在校的 不走的人 自己 ...
- Luogu P2055 [ZJOI2009]假期的宿舍
这个建图真玄.jpg 简直是常识题 然而我常识不足QwQ 话说题解里的代码在我看来不美观所以抄不了题解 于是debug一个小时QwQ 给萌新一点活路吧 #include<cstdio> # ...
- BZOJ1433 ZJOI2009 假期的宿舍 二分图匹配
1433: [ZJOI2009]假期的宿舍 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2375 Solved: 1005 [Submit][S ...
- 二分图——洛谷P1155 双栈排序
https://daniu.luogu.org/problem/show?pid=1155 二分图染色+模拟 1.首先考虑一个简单情况--单栈排序,显然有这样的一个事实: a[i]和a[j] 不能压入 ...
- 【二分图】洛谷P2055假期的宿舍
题目描述 学校放假了 · · · · · · 有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题.比如 A 和 B 都是学校的学生,A 要回家,而 C 来看B,C 与 A 不认识. ...
最新文章
- 留意2021年比较热门的5种AI工作技能
- CV之CycleGAN:CycleGAN算法相关思路配图、论文集合
- Java更快地对基元数组进行排序?
- 【火炉炼AI】机器学习018-项目案例:根据大楼进出人数预测是否举办活动
- 数据库技术丨GaussDB(DWS)数据同步状态查看方法
- python thread.event
- 4.9_bridge_结构型模式:桥模式
- SpringMVC中请求的转发和重定向
- 企业微信小程序开发流程
- HikariCP源码分析
- java spy_Java Spy - 代码跟踪神器
- uni-app微信小程序配置(三)
- Vue表单数据修改与删除
- 2018春招实习笔试面试总结(PHP)
- 韭菜种植与收割:发布你自己的 ICO
- PMI-ACP考试介绍
- vue生命周期中,钩子函数执行顺序
- RJ45型配线架的端接后安装
- 怎么破解PPT只读密码
- 基本的二进制加法器(计算机组成原理)
热门文章
- java 485通讯_CAKJ-963U3-KT带485通讯上下限报警智能型仪表
- 向程序发送命令失败_Word提示:“向程序发送命令时出现问题”重装软件也没用?...
- gromacs manual_GROMACS蛋白配体分子动力学模拟结果分析简要笔记
- 对计算机硬件的工作原理的认识,计算机硬件的认识与安装.doc
- jar包在linux定时调度,xshell脚本启动JAR包-定时任务拆分日志
- 什么是jquery_什么是jQuery?
- 洞悉物联网发展1000问之可穿戴设备的未来会怎样?
- 中文编程汉语编程开发的大型管理软件案例
- perl中的q,qq,qw,qr,qx
- 闭包函数 use 改变外部变量