洛谷P2055假期的宿舍
此题主要是考察二分图匹配,而二分图匹配最主要的就是建图,而图一般都是要分成两个部分来分,比如该题就需要先将在学校住的人和床连在一起,因为在学校住就会与一个床。然后每两个人之间假如他们相互认识就可以相互连边,这样就可以通过人人相连实现人床相连。
\(Code\)
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <cmath>
#pragma GCC optimize(2)
#pragma GCC optimize(3)
using namespace std;
int n1, T, cnt;
int map[1010][1010];
int vis[200100], lin[200010], school[200100], home[200010], flag[200100];
struct cym {
int to, nex;
}e[200010];
inline void add(int f, int t)
{
e[++cnt].to = t;
e[cnt].nex = lin[f];
lin[f] = cnt;
}
inline bool dfs(int now)
{
for (int i = lin[now]; i; i = e[i].nex)
if (!vis[e[i].to])
{
vis[e[i].to] = 1;
if (!flag[e[i].to] || dfs(flag[e[i].to])) {
flag[e[i].to] = now; return true;
}
}
return false;
}
int main()
{
scanf("%d", &T);
while (T--)
{
int ans = 0, sum = 0;
memset(map, 0, sizeof(map)); memset(school, 0, sizeof(school));memset(home, 0, sizeof(home));memset(flag, 0, sizeof(flag));memset(e, 0, sizeof(e));memset(lin, 0, sizeof(lin));
cnt = 0;
scanf("%d", &n1);
for (int i = 1; i <= n1; i++)
scanf("%d", &school[i]);
for (int i = 1; i <= n1; i++)
{
scanf("%d", &home[i]);
if (!school[i])
home[i] = 0;
if (school[i])
add(i, i);
}
for (int i = 1; i <= n1; i++)
if (!home[i])
sum++;
for (int i = 1; i <= n1; i++)
for (int j = 1; j <= n1; j++)
{
scanf("%d", &map[i][j]);
if (map[i][j] && school[j])
add(i, j);
}
for (int i = 1; i <= n1; i++)
if (!home[i])
{
memset(vis, 0, sizeof(vis));
if (dfs(i)) ans++;
}
if (ans == sum) printf("^_^\n");
else printf("T_T\n");
}
return 0;
}
/*
2
3
1 1 0
0 1 0
0 0 1
0 0 0
1 0 0
3
1 1 0
0 1 0
0 1 1
1 0 0
1 0 0
*/
洛谷P2055假期的宿舍的更多相关文章
- 洛谷 - P2055 - 假期的宿舍 - 最大流
https://www.luogu.org/problemnew/show/P2055 这是一个错误的示范. 一开始觉得就找一条路从外校同学连到本校同学然后最终从周末回家的同学流出,每个人睡后一个人的 ...
- 【二分图】洛谷P2055假期的宿舍
题目描述 学校放假了 · · · · · · 有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题.比如 A 和 B 都是学校的学生,A 要回家,而 C 来看B,C 与 A 不认识. ...
- 洛谷 p2055 假期的宿舍 题解
好长时间没更博客了 因为实在太蒻了 这让本蒟蒻怎么办 今天终于遇到了一道模板题(之前也有,不过太蒻了都不会) 不过...写代码5分钟,调试2小时 分界线:回归正题 这个就是普通的匈牙利算法 差不多 思 ...
- 洛谷P2756飞行员配对方案问题 P2055假期的宿舍【二分图匹配】题解+代码
洛谷 P2756飞行员配对方案问题 P2055假期的宿舍[二分图匹配] 飞行员配对方案问题 题目背景 第二次世界大战时期.. 题目描述 英国皇家空军从沦陷国征募了大量外籍飞行员.由皇家空军派出的每一架 ...
- 洛谷 P2055 [ZJOI2009]假期的宿舍
洛谷 P2055 题目描述 学校放假了 · · · · · · 有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题.比如 A 和 B 都是学校的学生,A 要回家,而 C 来看B,C ...
- 洛谷 P2055 【假期的宿舍】
题库 :洛谷 题号 :2055 题目 :假期的宿舍 link :https://www.luogu.org/problem/P2055 首先明确一下:校内的每个学生都有一张床(只是校内的有) 思路 : ...
- 洛谷P2055 [ZJOI2009]假期的宿舍
P2055 [ZJOI2009]假期的宿舍 题目描述 学校放假了 · · · · · · 有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题.比如 A 和 B 都是学校的学生,A ...
- 洛谷——P2055 [ZJOI2009]假期的宿舍
P2055 [ZJOI2009]假期的宿舍 学校放假了 · · · · · · 有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题.比如 A 和 B 都是学校的学生,A 要回家,而 ...
- 洛谷 P2055 [ ZJOI 2009 ] 假期的宿舍 —— 二分图匹配
题目:https://www.luogu.org/problemnew/show/P2055 二分图匹配: 注意要连边的话对方必须有床! 代码如下: #include<iostream> ...
随机推荐
- .NetCore 资料分享
.NetCore3.0 你还不打算入手么? 这次主要是推荐一些自己学习中遇到的一些好的资料和自己的看法( 我推荐的都是我看过的 Asp.Net Core 不做介绍了,直接分享资料了 资料: .NetC ...
- C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 对外不要提供Delete方法加强软件的安全性
1:软件系统一般不怕外面的人,最怕有内鬼.2:软件系统不怕一万,就怕万一,最好不要对外有漏洞,能不提供Delete方法就不提供.3:特别是不要有能远程调用的Delete方法,那就是出了事情都无法找到是 ...
- 五、xadmin自定义插件2
以导入插件为例说明: 1.在xadmin-->plugins下面新建excel.py文件 2.新建ListExcelImportPlugin类,继承BaseAdminPlugin from xa ...
- 剑指offer--1.二维数组中的查找
题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. ...
- Python-生成器_监听文件输入的例子_37
def tail(filename): f = open(filename,encoding='utf-8') while True: line = f.readline() if line.stri ...
- JDBC+Servlet+JSP的学生案例增删改查
数据库信息传输到页面实现. 先进行学生信息页面展示: 接口IStudentDao public interface IStudentDao { /** * 保存操作 * @param stu 学生对象 ...
- 使用kubeadm安装kubenetes
一.环境 关闭防火墙和selinux 禁用swap master节点安装 #1.配置源 cd /etc/yum.repos.d/wget https://mirrors.aliyun.com/dock ...
- C#中as运算符
as运算符用于执行引用类型的显式类型转换.如果要转换的类型与指定的类型兼容,转换就会成功进行:如果类型不兼容,as运算符就会返回null值.如下面的代码所示,如果object引用实际上不引用strin ...
- Java8新特性之Collectors
参考:Java8新特性之Collectors 在第二天,你已经学习了Stream API能够让你以声明式的方式帮助你处理集合.我们看到collect是一个将管道流的结果集到一个list中的结束操作.c ...
- qtp自动化测试-条件语句 if select case
1 if 语句 if condition then end if If condition Then [statements] [ElseIf condition-n Then [else ...