hdu1068

#include<stdio.h>#include<string.h>const int MAXN=1000;int map[MAXN][MAXN];int n;int linker[MAXN];bool used[MAXN];bool dfs(int a){    for(int i=0;i<n;i++)      if(map[a][i]&&!used[i])      {          used[i]=true;          if(linker[i]==-1||dfs(linker[i]))          {              linker[i]=a;              return true;          }          }      return false;    }int hungary(){    int result=0;    memset(linker,-1,sizeof(linker));    for(int i=0;i<n;i++)    {        memset(used,0,sizeof(used));        if(dfs(i))  result++;    }     return result;   }int main(){    //freopen("test.in","r",stdin);    //freopen("test.out","w",stdout);    int i,j,num,a,b;    while(scanf("%d",&n)!=EOF)    {        memset(map,0,sizeof(map));        for(i=1;i<=n;i++)        {                scanf("%d: (%d)",&a,&num);                for(j=0;j<num;j++)                {                    scanf("%d",&b);                    map[a][b]=1;                }            }         int cnt=hungary();        printf("%d\n",n-cnt/2);

}      return 0; }     
时间: 2024-10-11 17:27:40

hdu1068的相关文章

hdu1068 Girls and Boys --- 最大独立集

有一个集合男和一个集合女,给出两集合间一些一一对应关系,问该两集合中的最大独立集的点数. 最大独立集=顶点总数-最大匹配数 此题中,若(a,b)有关,则(b,a)有关,每一个关系算了两次,相当于二分图的两边集合没有分男女,两边都是总人数, 所以此题中答案应该是 顶点总数-最大匹配数/2 #include<cstdio> #include<cstring> #include<cmath> #include<iostream> #include<algor

hdu1068 Girls and Boys

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1068 二分图的最大独立集数=节点数(n)— 最大匹配数(m) 另外需要注意的是: 本题求出的最大匹配数是实际的两倍需要m/2 1 #include<iostream> 2 #include<stdio.h> 3 #include<math.h> 4 #include<string.h> 5 #include<stdlib.h> 6 using names

hdu1068 Girls and Boys(二分图)

#include<iostream> #include<cstring> #include<cstdio> using namespace std; const int Max = 500; int num; int g[Max][Max]; int linker[Max]; bool used[Max]; bool dfs(int u){ int v; for(v=0;v<num;v++) { if(g[u][v]&&!used[v]){ use

HDU1068 Girls and Boys 【最大独立集】

Girls and Boys Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 7710    Accepted Submission(s): 3535 Problem Description the second year of the university somebody started a study on the roman

【二分图匹配入门专题1】B - Girls and Boys hdu1068【最大独立集】

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 maximu

hdu1068 Girls and Boys,二分图最大独立集

点击打开链接 二分图最大独立集 = 顶点数 - 最大匹配数 #include <queue> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; const int maxn = 1005; int g[maxn][maxn]; int n; int link[maxn]; bool used[maxn

HDU1068/POJ1466_Girls and Boys(二分图/最大独立集=N-最大匹配)

解题报告 http://blog.csdn.net/juncoder/article/details/38160591 题目传送门(POJ) 题目传送门(HDU) 题意: 求满足条件的最大集合:集合内不论什么两个人都没有浪漫关系 思路: 跟POJ2771一样的题,变的简单多了.POJ2771解题报告 #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> us

hdu1068【动态规划】

一道经典的dp.因子中只含2,3,5,7的数字叫做humble number,求第n个丑数.任何新的丑数都是原来的丑数乘以2or3or5or7得来的,由此可以得到新的丑数的转移方程dp[i] = min(dp[a] * 2, dp[b] * 3, dp[c] * 5, dp[d] * 7),而abcd分别由四个变量维护. 1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 int ans[6000]; 5

HDU 1068

[原题] http://acm.hdu.edu.cn/showproblem.php?pid=1068 [类型] 二分图最大独立集(最大二分匹配) [题意] 题目给定一些男女生之间相互的romantic关系,要求找出一个最大的集合,使得该集合中的所有男女生之间都不存在romantic关系. [分析] 一个二分图的最大独立集点数与最大二分匹配个数有直接的关系: 最大独立集点数 = 顶点数 - 最大二分匹配对数 故本题直接转化为求最大二分匹配即可,需要注意的是,题中给出的条件是1指向2,2也会指向1