Description

学校放假了······有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题。比如A
和B都是学校的学生,A要回家,而C来看B,C与A不认识。我们假设每个人只能睡和自己直接认识的人的床。那么一
个解决方案就是B睡A的床而C睡B的床。而实际情况可能非常复杂,有的人可能认识好多在校学生,在校学生之间也
不一定都互相认识。我们已知一共有n个人,并且知道其中每个人是不是本校学生,也知道每个本校学生是否回家
。问是否存在一个方案使得所有不回家的本校学生和来看他们的其他人都有地方住。

Input

第一行一个数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,但是显然自己还是可以睡自己的床),
认识的关系是相互的。
1 ≤ n ≤ 50,1 ≤ T ≤ 20

Output

对于每组数据,如果存在一个方案则输出“^_^”(不含引号)否则输出“T_T”(不含引号)。
(注意输出的都是半角字符,即三个符号的ASCII码分别为94,84,95)

Sample Input

1
3
1 1 0
0 1 0
0 1 1
1 0 0
1 0 0

Sample Output

^_^

裸的二分图匹配……没什么难度

 #include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
struct node
{
int to,next;
} edge[];
int a[],Ans[],head[],num_edge,used[],NOW; void add(int u,int v)
{
edge[++num_edge].to=v;
edge[num_edge].next=head[u];
head[u]=num_edge;
} bool find(int x)
{
for (int i=head[x]; i!=; i=edge[i].next)
{
if (used[edge[i].to]!=NOW)
{
used[edge[i].to]=NOW;
if (Ans[edge[i].to]== || find(Ans[edge[i].to]))
{
Ans[edge[i].to]=x;
return true;
}
}
}
return false;
} int main()
{
int T;
scanf("%d",&T);
while (T--)
{
int Cnt=,n,x,T,Sum=;
memset(edge,,sizeof(edge));
memset(used,,sizeof(used));
memset(Ans,,sizeof(Ans));
memset(head,,sizeof(head));
num_edge=;
scanf("%d",&n);
for (int i=;i<=n;++i)
scanf("%d",&a[i]);
for (int i=;i<=n;++i)
{
scanf("%d",&x);
if (a[i]== && x==)
a[i]=;
}
for (int i=;i<=n;++i)
{
if (a[i]==) add(i,i),++Sum;
if (a[i]==) ++Sum;
for (int j=;j<=n;++j)
{
scanf("%d",&x);
if (x== && (a[i]== || a[i]==) && a[j]!=)
add(i,j);
}
}
for (int i=;i<=n;++i)
if (a[i]== || a[i]==)
{
NOW=i;
if (find(i))
++Cnt;
}
if (Cnt==Sum)
printf("^_^\n");
else
printf("T_T\n");
}
}

1433. [ZJOI2009]假期的宿舍【二分图】的更多相关文章

  1. BZOJ1433 ZJOI2009 假期的宿舍 二分图匹配

    1433: [ZJOI2009]假期的宿舍 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2375  Solved: 1005[Submit][Sta ...

  2. 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 ...

  3. 1433: [ZJOI2009]假期的宿舍

    1433: [ZJOI2009]假期的宿舍 链接 分析: 直接网络流,看是否满足即可. S向每个有需要的人连边,有床的向T连边,认识的人之间互相连边. 代码: #include<cstdio&g ...

  4. bzoj 1433: [ZJOI2009]假期的宿舍 -- 最大流

    1433: [ZJOI2009]假期的宿舍 Time Limit: 10 Sec  Memory Limit: 162 MB Description Input Output Sample Input ...

  5. [ZJOI2009]假期的宿舍 二分图匹配匈牙利

    [ZJOI2009]假期的宿舍 二分图匹配匈牙利 一个人对应一张床,每个人对床可能不止一种选择,可以猜出是二分图匹配. 床只能由本校的学生提供,而需要床的有住校并且本校和外校两种人.最后统计二分图匹配 ...

  6. 洛谷P2055 [ZJOI2009]假期的宿舍 [二分图最大匹配]

    题目描述 学校放假了 · · · · · · 有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题.比如 A 和 B 都是学校的学生,A 要回家,而 C 来看B,C 与 A 不认识. ...

  7. BZOJ1433 [ZJOI2009]假期的宿舍 二分图匹配 匈牙利算法

    原文链接http://www.cnblogs.com/zhouzhendong/p/8372785.html 题目传送门 - BZOJ1433 题解 我们理一理题目. 在校的学生,有自己的床,还可以睡 ...

  8. BZOJ1433[ZJOI2009]假期的宿舍——二分图最大匹配

    题目描述 学校放假了······有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题.比如A 和B都是学校的学生,A要回家,而C来看B,C与A不认识.我们假设每个人只能睡和自己直接认 ...

  9. BZOJ 1433 [ZJOI2009]假期的宿舍(网络流)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1433 [题目大意] 在校学生有自己的床,外校的则没有,如果两个同学相互认识,则可以借用 ...

随机推荐

  1. Jquery Easy UI初步学习(三)数据增删改

    第二篇只是学了加载用datagrid加载数据,数据的增删改还没有做,今天主要是解决这个问题了. 在做增删改前需要弹出对应窗口,这就需要了解一下EasyUi的弹窗控件. 摘自:http://philoo ...

  2. Xcode8 log问题

    去除一堆log的方法: Xcode8--->Product---- Edit Scheme... -> Run -> Arguments, 在Environment Variable ...

  3. MySQL3:存储过程和函数

    什么是存储过程 简单说,存储过程就是一条或多条SQL语句的集合,可视为批文件,但是起作用不仅限于批处理.本文主要讲解如何创建存储过程和存储函数以及变量的使用,如何调用.查看.修改.删除存储过程和存储函 ...

  4. Spring系列之——springboot解析resources.application.properties文件

    摘要:本文通过讲解如何解析application.properties属性,介绍了几个注解的运用@Value @ConfigurationProperties @EnableConfiguration ...

  5. [LeetCode] Next Permutation(一种巧妙的解题方法)

    Next Permutation Implement next permutation, which rearranges numbers into the lexicographically nex ...

  6. Recommend ways to overwrite hashCode() in java

    Perface In the former chapter, I talk about topics about hashCode, And I will continue to finish the ...

  7. CentOS 7 搭建PXC 数据库集群

    CentOS 7 搭建PXC 数据库集群 PXC( Percona XtraDB Cluster ) 特点如下: 1.同步复制,事务要么在所有节点提交或不提交,保证了数据的强一致性. 2.多主复制,可 ...

  8. mac os idea的快捷键

    全局搜索:shift+command+f 搜索类:command+o 光标向前向后移动:command+option+(左/右) 删除一行: command+delete

  9. python中的字符串编码问题——4.unicode编解码(以实际工作中遇到的韩文编码为例)

    韩文unicode编解码  问题是这样,工作中遇到有韩文数据出现乱码,说是unicode码. 类似这样: id name 323 52186863 149 63637538 314 65516863 ...

  10. 将远程UI分支克隆到本地UI分支

    git checkout -b UI git remote add origin <url> git fetch origin git branch --track UI origin/U ...