HDU-1068Girls and Boys(二分匹配)

                                                       Girls and Boys
 


Problem Description

the second year of the university somebody started a study on the romantic relations between the students. The relation “romantically involved” is defined between one girl and one boy. For the study reasons it is necessary to find out the maximum set satisfying 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.

Sample Input

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

Sample Output

5
2

题意描述:

给你一个n表示有n个人然后括号里面是对应的该号人与多少个人人有联系,并且给出了有联系的人的编号,由于联系是双向的所以最后输出要除以2,求最大独立集,最大独立集指的是两两之间没有边的顶点的集合,顶点最多的独立集成为最大独立集,二分图的最大独立集=节点数-最大匹配数

程序代码:

#include<stdio.h>
#include<string.h>
int e[1010][1010],match[1010],book[1010],n,m,k;
int dfs(int u);
int main()
{
	int i,j,a,b,sum;
	while(scanf("%d",&n)!=EOF)
	{
		sum=0;
		memset(e,0,sizeof(e));
		memset(match,0,sizeof(match));
		for(i=0;i<n;i++)
		{
			scanf("%d: (%d)",&a,&m);
			while(m--)
			{
				scanf("%d",&b);
				e[a][b]=1;
			}
		}
		for(i=0;i<n;i++)
		{
			memset(book,0,sizeof(book));
			if(dfs(i)==1)
				sum++;
		}
		printf("%d\n",n-sum/2);
	}
	return 0;
}
int dfs(int u)
{
	int i;
	for(i=0;i<n;i++)
		if(book[i]==0&&e[u][i]==1)
		{	
			book[i]=1;
			if(match[i]==0||dfs(match[i])==1)
			{
				match[i]=u;
				return 1;
			}
		}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/HeZhiYing_/article/details/81559685