题意

有n个同学,给出同学之间的爱慕关系,选出一个集合使得集合中的人没有爱慕关系。问能选出的最大集合是多少。

分析

二分图的最大独立集。

最大独立集的意思是,在图中选出最多的点,使他们两两之间没有边,这个顶点的集合就是最大独立集。

先下结论:如果一个图是二分图,|最大独立集| = |V|-|最大匹配数|。

我们这么思考(设匹配数为\(v\)):

如果把二分图的最大匹配从原图中去掉,剩下的\(n-2v\)个顶点肯定是没有边相连的(如果还有边相连,我们可以一定可以再加入到匹配中,那还是个锤子的最大匹配)。此时剩下的顶点已经是一个独立集了。接下来,从每条匹配边的两端取一个结点加入独立集中,一定可以使得独立集仍然是独立集:因为对于最大匹配中的任意两个点,要么\(x\)到\(y\)有一条边,要么\(y\)到\(x\)有一条边,要么\(x\)到\(y\)没有边且\(x\)到\(y\)也没有边。这样就能得到这个题目的答案了。

注意:Hungry是针对有向图的,对于无向图match数成了原来的2倍,要除以2。这题除以2的原因和这个还不一样:由于题目没有给出哪些是男的哪些是女的(没有明显的二分图),所以我们是对二分图的两边去进行匹配的(还记得kuangbin的板子吗?在hungary算法中,我们只对一侧进行dfs操作)。所以最大匹配数应该是求出来的数除以2 。

代码

这题的输入格式比较特别,scanf社保之。

#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#define MP make_pair
#define PB push_back
#define fi first
#define se second
#define ZERO(x) memset((x), 0, sizeof(x))
#define ALL(x) (x).begin(),(x).end()
#define rep(i, a, b) for (int i = (a); i <= (b); ++i)
#define per(i, a, b) for (int i = (a); i >= (b); --i)
#define QUICKIO \
ios::sync_with_stdio(false); \
cin.tie(0); \
cout.tie(0);
#define MS(x,y) memset(x,y,sizeof(x))
using namespace std; bool mat[1005][1005];
bool vis[1005];
int link[1005],n; int dfs(int u)
{
rep(i,0,n-1)
{
if(mat[u][i] && !vis[i])
{
vis[i]=true;
if(link[i]==-1 || dfs(link[i]))
{
link[i]=u; return true;
}
}
}
return false;
} int hungary()
{
MS(link,-1);
int res=0;
rep(i,0,n-1)
{
MS(vis,false);
if(dfs(i)) res++;
}
return res/2;
} int main()
{
while(scanf("%d",&n)==1)
{
ZERO(mat);
rep(i,1,n)
{
int x, k;
scanf("%d: (%d)", &x, &k);
rep(j,1,k)
{
int tmp;
scanf("%d", &tmp);
mat[x][tmp]=true;
}
}
printf("%d\n", n-hungary());
}
return 0;
}

「日常训练」Girls and Boys(HDU-1068)的更多相关文章

  1. 「日常训练」ZgukistringZ(Codeforces Round #307 Div. 2 B)

    题意与分析(CodeForces 551B) 这他妈哪里是日常训练,这是日常弟中弟. 题意是这样的,给出一个字符串A,再给出两个字符串B,C,求A中任意量字符交换后(不限制次数)能够得到的使B,C作为 ...

  2. 「日常训练」 神、上帝以及老天爷 (HDU 2048)

    题意 数论中的错排问题.记错排为Dn" role="presentation">DnDn,求Dnn!" role="presentation&q ...

  3. 「日常训练」 不容易系列之(3)—— LELE的RPG难题 (HDU 2045)

    题目简述 有排成一行的n" role="presentation">nn个方格,用红(Red).粉(Pink).绿(Green)三色涂每个格子,每格涂一色,要求任何 ...

  4. 「日常训练」 Fire!(UVA-11624)

    与其说是训练不如说是重温.重新写了Java版本的代码. import java.util.*; import java.math.*; import java.io.BufferedInputStre ...

  5. 「日常训练」COMMON 约数研究(HYSBZ-1968)

    题意与分析 感谢https://www.cnblogs.com/Leohh/p/7512960.html的题解.这题话说原来不在我的训练范围,正好有个同学问我,我就拿来做做.数学果然不是我擅长的啊,这 ...

  6. 「日常训练」Mike and Feet(Codeforces Round #305 Div. 2 D)

    题意 (Codeforces 548D) 对一个有$n$个数的数列,我们要求其连续$x(1\le x\le n)$(对于每个$x$,这样的连续group有若干个)的最小数的最大值. 分析 这是一道用了 ...

  7. 「日常训练」 Mike and Fun (CFR305D2B)

    题意(CodeForces 548B) 每次对01矩阵中的一位取反,问每次操作后,单列中最长连续1的长度. 分析 非常非常简单,但是我当时训练的时候WA了四次...无力吐槽了,人间 不值得.jpg 代 ...

  8. 「日常训练」Common Subexpression Elimination(UVa-12219)

    今天做的题目就是抱佛脚2333 懂的都懂. 这条题目干了好几天,最后还是参考别人的代码敲出来了,但是自己独立思考了两天多,还是有收获的. 思路分析 做这条题我是先按照之前的那条题目(The SetSt ...

  9. 「日常训练」Magic Stones(CodeForces-1110E)

    题意 给定两个数组c和t,可以对c数组中的任何元素变换\(c_i\)​成\(c_{i+1}+c_{i-1}-c_i\)​,问c数组在若干次变换后能否变换成t数组. 分析 这种魔法题目我是同样的没做过. ...

随机推荐

  1. PHP语言开发微信公众平台(订阅号)之curl命令(补充)

    在之前的一篇随笔中,博主在调用curl命令上传文件时会经常出现上传方法过时的情况.如下图所示: 所以,我们只需要把上传方法换成创建CURLFile 类即可.如下所示 $ch = curl_init() ...

  2. VS2013 类向导 "异常来自 HRESULT:0x8CE0000B" 解决方法

    转自 http://blog.csdn.net/skyloveyue/article/details/52105912 我用使用了第二种方法: 改变项目的位置 将项目从原来D盘的位置(D:\proje ...

  3. OSTimeDlyHMSM函数

    1.os_time.c里面 #if OS_TIME_DLY_HMSM_EN > 0 INT8U OSTimeDlyHMSM (INT8U hours, INT8U minutes, INT8U ...

  4. 图形解析理解 css3 之倾斜属性skew()

    1.作用 改变元素在页面中的形状2.语法 属性:transform 函数: 1.skew(xdeg) 向横向倾斜指定度数 x取值为正,X轴不动,y轴逆时针倾斜一定角度 x取值为负,X轴不动,y轴顺时针 ...

  5. 如果有人问你CAP理论是什么,就把这篇文章发给他。

    绝对和你在网上看到的CAP定理介绍不一样. CAP 定理(CAP theorem)又被称作布鲁尔定理(Brewer's theorem),是加州大学伯克利分校的计算机科学家埃里克·布鲁尔(Eric B ...

  6. oracle静默安装

    RHEL6+oracle11.2 无界面化命令安装如下: 1.所需安装软件包检查: yum install binutils-2.* compat-libcap1* compat-libstdc++- ...

  7. HTML | video的封面平铺方法

    <video style="object-fit:fill;"></video>

  8. wso2 ei 6.4.0安装笔记

    目的:将最新版(6.4.0)部署在linux服务器,与Api Manager部署在同一环境 环境: Centos 7.3 Jdk 8 Mysql 5.7 问题一: 将H2替换为Mysql5.7数据库时 ...

  9. PHP交友网站源码、门户社交聊天网站源码,多国语言婚恋交友网站

    交友网站管理系统,是一款基于微软ASP平台开发,集成交友.婚介.商家.并与支付宝.财付通.完美整合等功能于一体的交友网站管理系统.地方交友网站,企业或个人都有能力运营地方交友门户网站,完善的会员系统. ...

  10. 视频网站数据MapReduce清洗及Hive数据分析

    一.需求描述 利用MapReduce清洗视频网站的原数据,用Hive统计出各种TopN常规指标: 视频观看数 Top10 视频类别热度 Top10 视频观看数 Top20 所属类别包含这 Top20 ...