Hdu1068 Girls and Boys【二分图最大独立集】

news/2025/1/16 3:34:27/

Girls and Boys

1

题意

n n n 个学生,每个学生可能和若干个其他异性学生有过恋爱关系
现在要选择一些学生形成集合,使得集合内任意两个学生之间都没有过恋爱关系

思路

把学生抽象成点,恋爱关系抽象成边,题意即是求:最大独立集,集合内部没有任何的边

最大独立集 ⇔ \Lrarr 最小点覆盖的补集

但是这里没有明确二分图的左右点,我们可以将所有点复制,一个放置左边,一个放在右边,
那么这张新图的最大匹配数量其实就是原图的最大匹配的两倍,相当于把原图整张复制了,
这样子就不用考虑左右点的明确

// Problem: Girls and Boys
// Contest: HDOJ
// URL: https://acm.hdu.edu.cn/showproblem.php?pid=1068
// Memory Limit: 65 MB
// Time Limit: 20000 ms
// 
// Powered by CP Editor (https://cpeditor.org)#include<bits/stdc++.h>
#define fore(i,l,r)	for(int i=(int)(l);i<(int)(r);++i)
#define fi first
#define se second
#define endl '\n' 
#define ull unsigned long longconst int INF=0x3f3f3f3f;
const long long INFLL=0x3f3f3f3f3f3f3f3fLL;typedef long long ll;std::vector<std::vector<int>> g;
std::vector<bool> used;
std::vector<int> match;bool dfs(int u){for(auto v : g[u])if(!used[v]){used[v] = true;if(!match[v] || dfs(match[v])){match[v] = u;return true;}}return false;
}int main(){std::ios::sync_with_stdio(false);std::cin.tie(nullptr);std::cout.tie(nullptr);int n;while(~scanf("%d", &n)){g.assign(n + 1, std::vector<int>());match.assign(n + 1, 0);fore(i, 0, n){int u, k;scanf("%d: (%d)", &u, &k);while(k--){int v;scanf("%d", &v);g[u].push_back(v);}}int num = 0;fore(i, 0, n){used.assign(n, false);if(dfs(i))	++num;}std::cout << n - num / 2 << endl;}return 0; 
}

http://www.ppmy.cn/news/1429784.html

相关文章

如何安装和使用Yarn管理JavaScript依赖

在JavaScript开发中&#xff0c;依赖管理是一个至关重要的环节。Yarn是一个强大的包管理工具&#xff0c;旨在提供快速、可靠和安全的依赖解决方案。本文将介绍如何安装和使用Yarn&#xff0c;让你轻松管理JavaScript项目的依赖。 1. 安装Yarn 首先&#xff0c;我们需要在系统…

每天学习一个Linux命令之paste

每天学习一个Linux命令之paste 介绍 在Linux系统中&#xff0c;有许多强大而实用的命令&#xff0c;它们可以帮助我们更高效地处理文本文件。其中一个有趣的命令就是paste。paste命令可以将多个文件的内容按列合并&#xff0c;并输出到标准输出或指定的文件中。 在本篇博客中…

项目中,如何写 readme.md 文件 | 写项目总结

tips&#xff1a;注意写 1. readme文件&#xff1a;①项目文档&#xff08;项目需求和设计文档、项目系统架构和技术文档、接口文档&#xff09;、②项目结构、③启动项目。具体结构见下文。 2. 项目总结&#xff1a;技术栈、描述、主要工作&#xff01;&#xff01;需求及功…

重生奇迹mu坐骑怎么升级

重生奇迹mu坐骑怎么升级 1、前期&#xff0c;都是主线任务&#xff0c;我们必须要跟着主线任务走&#xff0c;前面的话升级一次需要的经验很少的&#xff0c;一天下来可以升级100级是轻轻松松的&#xff0c;主线任务是比较多的&#xff0c;我们跟着任务一直做差不多可以到150级…

Basic TCP Server Client

Server #include <stdio.h> #include <string.h> #include <unistd.h> // read and write (TCP); sendto and recvfrom (UDP) #include <arpa/inet.h> // 包含#include <sys/socket.h>int main(int argc, char* argv[]) {// 1. 创建监听fdint f…

C语言趣味代码(二)

1.珠玑妙算 1.1 介绍 《珠玑妙算》(Mastermind)是英国Invicta公司于1973年开始销售的一款益智游戏&#xff0c;据说迄今为止已经在全世界销售了5000万套。《珠玑妙算》于1974年获奖后&#xff0c;在1975年传入美国&#xff0c;1976年leslieH.Autl博士甚至还出版了一本名为The…

windows驱动开发-内存概述

“90%的程序问题都是由内存引起的&#xff0c;剩下的10%是使用内存引起的&#xff01;”这是一句非常经典的论证&#xff0c;实际上&#xff0c;在程序开发中&#xff0c;内存问题就是最大的问题&#xff0c;没有之一。 现代的计算机体系中&#xff0c;内存承载了太多的功能&a…

【竞技宝】中超:国安本轮4比1大胜,张稀哲表现不俗

国安在本轮中超主场跟青岛西海岸相遇,这场比赛球队进攻多点开花,最终以4比1将对手斩落马下,拿到了久违的大胜。其中,张稀哲、李可、王子铭都在比赛中有不俗表现。首先,张稀哲身为国安中场核心,他在比赛中传出了多脚有威胁的球,并且成功帮助队友得分。张稀哲在国安神兵天降的表现…