hdu 1068 Girls and Boys(匈牙利算法求最大独立集)
Girls and Boys
Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 7044 Accepted Submission(s): 3178
the condition: there are no two students in the set who have been “romantically involved”. The result of the program is the number of students in such a set.
The input contains several data sets in text format. Each data set represents one set of subjects of the study, with the following description:
the number of students
the description of each student, in the following format
student_identifier:(number_of_romantic_relations) student_identifier1 student_identifier2 student_identifier3 ...
or
student_identifier:(0)
The student_identifier is an integer number between 0 and n-1, for n subjects.
For each given data set, the program should write to standard output a line containing the result.
7
0: (3) 4 5 6
1: (2) 4 6
2: (0)
3: (0)
4: (2) 0 1
5: (1) 0
6: (2) 0 1
3
0: (2) 1 2
1: (1) 0
2: (1) 0
5
2
输出这种关系集合中最大的一个的学生人数。
(网上翻译)
#include"stdio.h"
#include"string.h"
#define N 505
int g[N][N];
int mark[N];
int link[N];
int n;
int find(int k) //寻找和能和K节点匹配的右节点
{
int i;
for(i=0;i<n;i++) //遍历数组
{
if(g[i][k]&&!mark[i]) //边存在,且是第一次訪问
{
mark[i]=1;
if(link[i]==-1||find(link[i]))
{ //该点未匹配或者和该点匹配的左节点能够另外匹配
link[i]=k;
return 1;
}
}
}
return 0; //匹配失败
}
int main()
{
int i,j,u,v,m;
while(scanf("%d",&n)!=-1)
{
for(i=0;i<n;i++)
for(j=0;j<n;j++)
g[i][j]=0;
for(i=0;i<n;i++)
{
scanf("%d: (%d)",&u,&m);
while(m--)
{
scanf("%d",&v);
g[u][v]=1;
}
}
memset(link,-1,sizeof(link)); //记录每一个二分图的右半边节点匹配的左节点标号
int ans=0;
for(i=0;i<n;i++)
{
memset(mark,0,sizeof(mark)); //标记数组。防止反复訪问一个节点
if(find(i))
ans++;
}
printf("%d\n",n-ans/2); //最大独立集点数 = N - 最大匹配数
}
return 0;
}
hdu 1068 Girls and Boys(匈牙利算法求最大独立集)的更多相关文章
- HDU 1068 Girls and Boys(模板——二分图最大匹配)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1068 Problem Description the second year of the univ ...
- HDU 1068 - Girls and Boys
求一个集合最多几个人,其之间任意两人没有暧昧关系. 二分图匹配 最大独立集 = 总点数 - 最大匹配数 匈牙利算法 因为每个同学都在二分图的两侧 当 A与B匹配时,B与A也匹配 所以 所求的最大匹配数 ...
- HDU 1068 Girls and Boys 二分图最大独立集(最大二分匹配)
Girls and Boys Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- HDU 1068 Girls and Boys(最大独立集)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1068 题目大意:有n个人,一些人认识另外一些人,选取一个集合,使得集合里的每个人都互相不认识,求该集合 ...
- POJ 1466 Girls and Boys (匈牙利算法 最大独立集)
Girls and Boys Time Limit: 5000MS Memory Limit: 10000K Total Submissions: 10912 Accepted: 4887 D ...
- HDU - 1068 Girls and Boys(二分匹配---最大独立集)
题意:给出每个学生的标号及与其有缘分成为情侣的人的标号,求一个最大集合,集合中任意两个人都没有缘分成为情侣. 分析: 1.若两人有缘分,则可以连一条边,本题是求一个最大集合,集合中任意两点都不相连,即 ...
- HDU 1068 Girls and Boys(最大独立集合 = 顶点数 - 最大匹配数)
HDU 1068 :题目链接 题意:一些男孩和女孩,给出一些人物关系,然后问能找到最多有多少个人都互不认识. 转换一下:就是大家都不认识的人,即最大独立集合 #include <iostream ...
- hdu 1068 Girls and Boys (二分匹配)
Girls and Boys Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- HDU——1068 Girls and Boys
Girls and Boys Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
随机推荐
- Jquery中children与find之间的区别
<table id="tb"> <tr> <td>0</td> <td>1</td> <td>2 ...
- ERROR StatusLogger Log4j2 could not find a logging implementation. Please add log4j-core to the classpath
问题: ERROR StatusLogger Log4j2 could not find a logging implementation. Please add log4j-core to the ...
- mybatis-5 手写代理
@Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface Select { public St ...
- 硬盘写入 iso
https://www.jb51.net/softjc/508796.html WinImage 正确操作是要有两个or以上-硬盘. 这样才能写入你要装的操作系统 测试或者安装
- node程序的部署神器pm2的基本使用
pm2是从nodejs衍生出来的服务器进程管理工具,可以做到开机就启动nodejs.当然了,也可以用nohup来做这件事情的. 前言 众所周知,Node.js运行在Chrome的JavaScript运 ...
- 2019西安多校联训 Day5
T1 光哥为了不让某初二奆佬恶心到我们而留下的火种 (貌似没这题平均分就100-了) 思路:就一横一竖让后就gztopa嘛 #include <bits/stdc++.h> using n ...
- [POJ] 3539 Elevator
http://poj.org/problem?id=3539 给定一个电梯,可以上升a,b,c层和回到1层,给定楼高h,求可达层数 lyd讲的同余类BFS,方法是先把三个量压成两个,即把h%a,因为对 ...
- DB2数据库在线备份还原
DB2在线备份设置方法: 第一步:开启归档日志 db2 update db cfg for TEST_DB using logretain on 第二步:重启数据库 第三步:进行一次离线备份 db2 ...
- POJ 3310 Caterpillar(图的度的判定)
题意: 给定一幅图, 问符不符合一下两个条件: (1) 图中没有环 (2)图中存在一条链, 点要么在链上, 要么是链上点的邻居. 分析: 建图,记录度数, 去掉所有度为1的点, 然后看看剩下是否是有2 ...
- Linux 磁盘测速
读: time dd if=/dev/zero of=/test.dbf bs=8k count=1000000 写: time dd if=/dev/zero of=/var/test bs=8k ...