POJ3692——Kindergarten(最大二分匹配)

【知识图谱】一文看懂知识图谱的搭建实践与科普教程(5万字完结篇) 所有可能的实体对:(“Mate40”,“华为”), (“Mate40”,“手机”), (“华为”,“手机”)。送入关系模型分类,预期输出 (“Mate40”,“华为”): 品牌, (“Mate40”,“手机”): 属于类别, (“华为”,“手机”): 无关系。,定义了图谱中概念和关系的类型层次结构,相当于知识图谱的“纲领”和“schema”。训练完成后,当模型看到新的句子,比如“苹果的MacBook笔记本性能强大”,识别出实体“苹果”(品牌)和“MacBook”(产品)后,就能正确输出关系“品牌”。 阅读详情

POJ3692——Kindergarten


description:

In a kindergarten, there are a lot of kids. All girls of the kids know each other and all boys also know each other. In addition to that, some girls and boys know each other. Now the teachers want to pick some kids to play a game, which need that all players know each other. You are to help to find maximum number of kids the teacher can pick.

Input:

The input consists of multiple test cases. Each test case starts with a line containing three integers G, B (1 ≤ G, B ≤ 200) and M (0 ≤ M ≤ G × B), which is the number of girls, the number of boys and the number of pairs of girl and boy who know each other, respectively.
Each of the following M lines contains two integers X and Y (1 ≤ X≤ G,1 ≤ Y ≤ B), which indicates that girl X and boy Y know each other.
The girls are numbered from 1 to G and the boys are numbered from 1 to B.
The last test case is followed by a line containing three zeros.

Output:

For each test case, print a line containing the test case number( beginning with 1) followed by a integer which is the maximum number of kids the teacher can pick.

Sample Input:

2 3 3
1 1
1 2
2 3
2 3 5
1 1
1 2
2 1
2 2
2 3
0 0 0

Sample Output:

Case 1: 3
Case 2: 4

题意:

  • 就是有一群孩子,男孩子之间互相认识,女孩子之间互相认识,并且有部分男孩子和女孩子认识彼此。

  • 现在老师需要选出一个孩子集合,集合中所有的孩子都互相认识。求集合的最大元素个数。

思路:

  • 首先拿到题,我们想到的是肯定是一个匹配题,那么在匹配题中我们要想办法把各种情况转化为最大匹配来算。

  • 首先我们可以通过题目的输入构建一张图,用邻接矩阵表示,这张图就是关系图,如果两个人认识,就记为1。不认识就记为0。

  • 然后我们可以把图转化为补图,那么补图中有边就表示这两个人其实是不认识的,那么我们要做的就是求最小顶点覆盖(找最少的顶点覆盖所有的边),把这些顶点去除补图中就没有边那么就表示在原图中这些人是互相认识的。即可求出答案。


AC代码

//在构图中,我把男孩当做从1到B,女孩当做从B+1到B+1+G。   

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;

    const int maxn = 410; 
    int G,B,M; 
    int map[maxn][maxn];    //邻接矩阵

    int linker[maxn]; 
    bool used[maxn];
    int uN,vN;              

    bool dfs(int u)
    {
        for(int v = 1;v <= vN ;v++)
        {
            if(map[u][v] && !used[v])
            {
                used[v] = true;
                if(linker[v] == -1 || dfs(linker[v]))
                {
                    linker[v] = u;
                    return true; 
                }
            }
        }
        return false;
    }

    int hungary()
    {
        int res = 0;
        memset(linker,-1,sizeof(linker));
        for(int u = 1;u <= uN ;u ++)
        {
            memset(used,false,sizeof(used));
            if(dfs(u)) res ++;
        }
        return res;
    }

    int main()
    {
        int Case = 1;
        while(scanf("%d %d %d",&G,&B,&M) != EOF && !(G == 0 && B == 0 && M == 0))
        {
            memset(map,0,sizeof(map));
            int n = G + B;                //总共G + B 个人 

            //男生之间的联系 
            for(int i = 1; i <= B ;i ++)
            {
                for(int j = 1; j <= B ;j ++)
                {
                    map[i][j] = 1;
                }
            }

            //女孩之间的联系 
            for(int i = B + 1; i <= n ;i ++)
            {
                for(int j = B + 1; j <= n ;j ++)
                {
                    map[i][j] = 1;  
                } 
            }

            //男女之间的联系 
            for(int i = 0; i < M ;i ++)
            {
                int x, y;
                scanf("%d %d",&x,&y);
                map[x + B][y] = 1;
                map[y][x + B] = 1;
            }

            //求补图
            for(int i = 1 ; i <= n ;i ++)
            {
                for(int j = 1;j <= n;j++)
                {
                    if(map[i][j] == 1)
                        map[i][j] = 0;
                    else map[i][j] = 1;     
                }

            } 

            //这个时候有边就表示两个人之间不认识,那么求最小顶点覆盖,除去这些边,那么剩下的人就全部认识了。
            //求最大匹配
            uN = n; vN = n;
            int x = hungary() / 2;
            int ans = n - x;         //最小顶点覆盖求出,用顶点数减去就时答案
            printf("Case %d: %d\n", Case ++, ans);
        }
        return 0;
    }

LVGL嵌入式GUI工程化架构与多窗口实践 嵌入式GUI开发中,LVGL作为轻量级图形库,其核心价值在于高效渲染与事件驱动机制。理解LVGL的对象树模型、资源管理机制(如RAW图像、静态字体)和屏幕生命周期,是构建稳定界面的基础。结合FreeRTOS等实时操作系统,可实现低功耗、高响应的交互体验。典型应用场景包括智能电表、HMI人机界面、工业控制面板等对内存敏感、需长期运行的设备。本文以微信式多窗口架构为范例,深入解析LVGL工程化落地的关键路径:分层目录结构、窗口模块封装、状态机式登录逻辑、TabView多页导航及图表/仪表盘动态可视化,覆盖从资源 阅读详情

相关推荐

HDMI接口技术解析:从基础到应用

本文深入解析HDMI接口技术,从其发展历程、物理结构到传输原理,全面剖析HDMI如何成为影音传输的主流标准。通过对比不同版本的带宽升级和实际应用案例,展示HDMI在4K/8K视频传输中的卓越性能,并分享硬件设计中的实战经验与避坑指南。

weixin_30485379的博客 369

Kindergarten(POJ-3692)

Problem Description In a kindergarten, there are a lot of kids. All girls of the kids know each other and all boys also know each other. In addition to that, some girls and boys know each other. Now...

Alex_McAvoy的博客 491

Python 爬虫:获取网页数据的 5 种方法

requests:适用于简单的静态网页抓取,易于使用。requestslxml:适合需要高效解析大规模网页内容的情况,支持 XPath 和 CSS 选择器。Selenium:适用于动态网页(JavaScript 渲染)的抓取,模拟浏览器行为获取动态数据。Scrapy:强大的爬虫框架,适合大规模的网页抓取任务,支持异步请求和高级功能。PyQuery:基于 jQuery 语法,适合快速开发,提供简洁的 CSS 选择器语法。

想看什么文章都可以私信给我,综合性博客。 5513

POJ 3692 Kindergarten(二分图最大团)

Kindergarten POJ - 3692In a kindergarten, there are a lot of kids. All girls of the kids know each other and all boys also know each other. In addition to that, some girls and boys know each other. Now

w4149 366

SVPWM原理与MCU/FPGA实现:从数学推导到工程实战

空间矢量调制(SVPWM)是实现高性能电机驱动控制的核心算法之一,其通过六个基本电压矢量与零矢量的伏秒平衡,在一个PWM周期内合成任意方向的旋转电压圆,相比传统SPWM可提升约15%的直流电压利用率。该技术不仅涉及扇区判断、作用时间计算、过调制限幅等数学原理,还在MCU与FPGA两种硬件平台上有不同的工程实现路径,包括中心对齐PWM配置、死区插入、定点数流水线设计等。在电动工具、无人机、机器人及车载执行器等电池供电场景中,SVPWM直接决定续航与扭矩表现。本文从数学原理出发,详细拆解MCU和FPGA实现细节

weixin_34265814的博客 300

适航规章、标准,书籍资料下载汇总(增加DO-160G中英文版)

很多读者之前问我有没有DO-160G的资源,现在终于找到啦!如果大家有其他想要的资源,可以在留言区告诉我,有空我会帮大家找找看~文末有下载链接:更新日志:2024-9-28:初版。2024-10-21:增加DO-330英文版PDF下载。2024-10-30:增加DO-160G中文版(非机翻)和英文版PDF下载。以下是一些收集到的适航相关的资料,分享给大家。(如果没有你想要的资料,请留言,等找到会及时更新!

qq_41854911的博客 2754

POJ 3692 Kindergarten 二分图最大独立集

POJ 3692Kindergarten 二分图最大独立集 Description In a kindergarten, there are a lot of kids. All girls of the kids knoweach other and all boys also know each other. In addition to that, some girlsand boy

u013599426的专栏 591

AUTOSAR从入门到精通-【应用篇】基于AUTOSAR架构的混合动力电池 ECU 软件开发

由于严峻的环境污染和能源短缺问题,各国都在致力于发展新能源车,以达到节能排放的目的。在此背景下,12V启停系统由于成本较低廉、匹配方便,得到广泛应用。但是12V系统作为启停系统后存在许多问题,比如节能和减排效果有限,并且轻度混合动力系统的功率需求通常在10~15KW,在此电压条件下运行时,电池的电流会达到1000A,因此该方案行不通。高压混合动力系统(>110V)的节油效果好,但是成本很高,并且需要大功率的电机。48V混合动力系统比高压混合动力系统成本。

getusushu的博客 1488

HDU-2458 Kindergarten

In a kindergarten, there are a lot of kids. All girls of the kids know each other and all boys also know each other. In addition to that, some girls and boys know each other. Now the teachers want to ...

hello_cmy的博客 257

Arduino、ESP32驱动AS3935数字闪电传感器(闪电传感器)

闪电传感器采用AMS独具创新的AS3935数字闪电传感芯片与Coilcraft的MA5532-AE专用天线,可在室内或室外,安全地检测方圆40km范围内发生闪电的距离,闪电相对强度与统计闪电发生次数。

不脱发的程序猿 2008

Android14 SystemUI如何实现下拉菜单栏高斯模糊背景效果(类似于毛玻璃效果)

我们都知道,从Android12起,下拉菜单栏控制中心都是黑色的,看起来非常不美观,而且国内的手机系统UI都做的比较美观,大部分的下拉菜单UI背景都是实现了高斯模糊效果,所以客户也会要求实现类似于这样的效果。在以前的Android项目中,实现下拉菜单栏的模糊背景就是通过截图的方式进行替换背景,而这种方式下拉菜单背景极易替换不了,就算是在各个地方都适配,还是有概率在复杂场景或者一些测试手法下出现背景是黑的情况,并且这种方式还比较影响性能,毕竟每次都要去截图一次,多做了额外的事。

热衷于Android Framework和系统APP的修改经验分享 1793

POJ - 3692 Kindergarten(二分匹配)

                                          Kindergarten Description In a kindergarten, there are a lot of kids. All girls of the kids know each other and all boys also know each other. In addition to...

K.X的博客 258

Dify使用教程3:Dify创建工作流

Dify使用教程3:Dify创建工作流 接着,我们连接下一个节点:“LLM”填入上下文变量为:result。这时候知识库就添加成功了。添加新节点:结束节点。

拥抱具身智能,昇腾Ascend C 5128

poj3692Kindergarten 二分匹配之最大独立集

//g个girl , b个boy , gril都被彼此认识,boy也彼此认识 //有的girl和boy也彼此认识 //问最多能选出多少人,这些人都彼此认识 //对陌生人建立一个图 //那么其最大独立集就是最多的彼此认识的人 #include<cstdio> #include<cstring> #include<iostream> using namespace std ; const int max

ijbuhv的专栏 759

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

poj 3692 Kindergarten(二分匹配,最大独立集)

题目链接 Kindergarten Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 6485   Accepted: 3196 Description In a kindergarten, there are a lot of kids. Al

fouzhe的博客 388

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

POJ3692——Kindergarten

Description In a kindergarten, there are a lot of kids. All girls of the kids know each other and all boys also know each other. In addition to that, some girls and boys know each other. Now the

Alex 642

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

【二分图最大独立集】POJ 3692:Kindergarten

一、题目内容 POJ 3692 原题地址 二、题意解释 一群男孩女孩,同性之间都相互认识,但是异性之间只有某些人认识彼此。给出相互认识的异性的各自编号。 求组成一个小队,这个小队里的人都相互认识。问这个小队最多能有多少人。 三、代码及注释 #include<stdio.h> #include<iostream> #include<string.h> using namespace std; /* 把相互不了解的人作为边构建二分图,这样题意是选择相互了解的人,那么是选择二

szy_fasheng的博客 216

poj 3692Kindergarten(二分匹配模板)

题意:有n个男生和m个女生,每个男生都认识和每个女生都认识,还有k对关系中的男生和女生都认识,老师想从中选择最大的人数并且这些人都认识 思路:显然这道题可以吧男生看为一个集合,女生为一个集合,然后可以看出,如果把每对认识的连线,然后剩下的都是不认识,那么补图明显是二分图,所以可以有最大团的知识得出 最大团=原图节点数-补图的最大二分匹配数 G的最大团指的是顶点数最多的一个团。 具 体

wuhulala的休息室 1026

POJ 3692 Kindergarten(最大独立集)

POJ 3692 Kindergarten(最大独立集) http://poj.org/problem?id=3692 题意:        已知班级有g个女孩和b个男孩,所有女生之间都相互认识,所有男生之间也相互认识,给出m对关系表示哪个女孩与哪个男孩认识。现在要选择一些学生来组成一个团,使得里面所有人都认识,求此团最大人数。 分析:        任意两个同学之间要么认识,要么不认识

code 958

poj 3692 Kindergarten

In a kindergarten, there are a lot of kids. All girls of the kids know each other and all boys also know each other. In addition to that, some girls and boys know each other. Now the teachers want to

---小菜鸟--- 240

POJ 3692 Kindergarten(最大独立集)

POJ 3692 Kindergarten 题目链接 题意:一个班级内,男的都互相认识,女的都互相认识,现在有k对男女互相认识,要求选出最多的人,使得他们两两互相认识 思路:最大独立集,把不认识的连边,就可以求出最大独立集就是两两互相认识的 代码: #include #include #include #include using namespace std;

Remilia's 742

POJ 3692Kindergarten(二分图最大匹配之最小顶点匹配)

题目地址:

scf0920 1064

poj 3692 Kindergarten 二分匹配

题目链接:poj 3692         给定

飞火扑蛾的专栏 465

poj -- 3692 Kindergarten (最大完全子图)

<br /> <br />KindergartenTime Limit: 2000MS Memory Limit: 65536K<br />Total Submissions: 2819 Accepted: 1292<br /><br /><br />Description<br /><br />In a kindergarten, there are a lot of kids. All girls of the kids know each other and all boys also know

蓝色污点的专栏 4209

poj3692 Kindergarten

Kindergarten Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 7244 Accepted: 3568 DescriptionIn a kindergarten, there are a lot of kids. All girls of the kids know each other and

樱花满地集于我心,楪舞纷飞祈愿相随 306

POJ 3692 Kindergarten

POJ 3692 Kindergarten 题目链接:POJ 3692 题意: 在幼儿园,有g个女生,b个男生,女生之间是互相认识的,男生之间也是互相认识的,然后男生女孩之间有m个关系,代表是互相认识的。 从他们之中选取一些出来,使得大家互相认识而且总人数最多。 分析: 转化为补图,补图中有边的说明是不为识的,那么想要剩下的人都认识,就得把边去掉,也就是去掉最少的点使所

小酷Miki的专栏 426
上一篇: struts2的值栈的初步认识
下一篇: ssh中与前端的json数据交换
WaveBridge
博客等级 码龄10年 8粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值