题目

此题主要是考察二分图匹配,而二分图匹配最主要的就是建图,而图一般都是要分成两个部分来分,比如该题就需要先将在学校住的人和床连在一起,因为在学校住就会与一个床。然后每两个人之间假如他们相互认识就可以相互连边,这样就可以通过人人相连实现人床相连。

\(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假期的宿舍的更多相关文章

  1. 洛谷 - P2055 - 假期的宿舍 - 最大流

    https://www.luogu.org/problemnew/show/P2055 这是一个错误的示范. 一开始觉得就找一条路从外校同学连到本校同学然后最终从周末回家的同学流出,每个人睡后一个人的 ...

  2. 【二分图】洛谷P2055假期的宿舍

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

  3. 洛谷 p2055 假期的宿舍 题解

    好长时间没更博客了 因为实在太蒻了 这让本蒟蒻怎么办 今天终于遇到了一道模板题(之前也有,不过太蒻了都不会) 不过...写代码5分钟,调试2小时 分界线:回归正题 这个就是普通的匈牙利算法 差不多 思 ...

  4. 洛谷P2756飞行员配对方案问题 P2055假期的宿舍【二分图匹配】题解+代码

    洛谷 P2756飞行员配对方案问题 P2055假期的宿舍[二分图匹配] 飞行员配对方案问题 题目背景 第二次世界大战时期.. 题目描述 英国皇家空军从沦陷国征募了大量外籍飞行员.由皇家空军派出的每一架 ...

  5. 洛谷 P2055 [ZJOI2009]假期的宿舍

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

  6. 洛谷 P2055 【假期的宿舍】

    题库 :洛谷 题号 :2055 题目 :假期的宿舍 link :https://www.luogu.org/problem/P2055 首先明确一下:校内的每个学生都有一张床(只是校内的有) 思路 : ...

  7. 洛谷P2055 [ZJOI2009]假期的宿舍

    P2055 [ZJOI2009]假期的宿舍 题目描述 学校放假了 · · · · · · 有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题.比如 A 和 B 都是学校的学生,A ...

  8. 洛谷——P2055 [ZJOI2009]假期的宿舍

    P2055 [ZJOI2009]假期的宿舍 学校放假了 · · · · · · 有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题.比如 A 和 B 都是学校的学生,A 要回家,而 ...

  9. 洛谷 P2055 [ ZJOI 2009 ] 假期的宿舍 —— 二分图匹配

    题目:https://www.luogu.org/problemnew/show/P2055 二分图匹配: 注意要连边的话对方必须有床! 代码如下: #include<iostream> ...

随机推荐

  1. COMCMS_CORE 起步篇,如何运行和部署

    前言:关于最近开源后,不少朋友问,怎么我下载下来,运行不了.或者怎么没有左边菜单.货不对板?还是我吃了数据? 感言:开源不容易,更不容易的是,明明毫无保留,还这么大误会,真是泪奔..... 好了.步入 ...

  2. virtualenv虚拟环境的使用

    前提条件:安装好python环境并配置好环境变量(可参考另一篇博文,python安装及配置) 1.打开cmd命令终端 pip3 install virtualenvwrapper-win(我电脑上面已 ...

  3. Python全栈开发之路 【第八篇】:面向对象编程设计与开发(2)

    一.继承与派生 什么是继承? 继承指的是类与类之间的关系,是一种什么是什么的关系,继承的功能之一就是用来解决代码重用问题. 继承是一种创建新的类的方式,在python中,新建的类可以继承一个或多个父类 ...

  4. H5 55-行高

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. python中Metaclass的理解

    今天在学习<python3爬虫开发实战>中看到这样一段代码3 class ProxyMetaclass(type): def __new__(cls, name, bases, attrs ...

  6. 福州大学软件工程1816 | W班 第7次作业成绩排名

    写在前面 汇总成绩排名链接 1.作业链接 第七次作业--项目需求分析(团队) 2.评分准则 本次作业映射总分为100分+贡献度得分,由以下部分组成: 引言(5 points) . 用户场景(15 po ...

  7. echarts使用笔记五:echarts的Zoom控件

    option = { title: { text: '趋势' }, tooltip : { trigger: 'axis', show:true, axisPointer : { // 坐标轴指示器, ...

  8. checkbox的使用总结,判断是否选中

    方法一: if ($("#checkbox-id").get(0).checked) { // do something } 方法二: if($('#checkbox-id').i ...

  9. [转帖]linux下的CPU、内存、IO、网络的压力测试

    linux下的CPU.内存.IO.网络的压力测试 https://www.cnblogs.com/zhuochong/p/10185881.html 一.对CPU进行简单测试: 1.通过bc命令计算特 ...

  10. Windows 机器上面同时安装mysql5.6 和 mysql5.7 的方法

    1. 自己遇到的两个坑: . mysql 登录的时候 需要使用-P 来指定端口号 不然默认走 呢 . mysql 5.6 和 mysql 5.7 更改用户密码的命令不一样.. 我这边浪费了很长时间: ...