| Time Limit: 5000MS | Memory Limit: 10000K | |
| Total Submissions: 11141 | Accepted: 4983 |
Description
Input
Output
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
Source
/*=============================================================================
#
# Author: liangshu - cbam
#
# QQ : 756029571
#
# School : 哈尔滨理工大学
#
# Last modified: 2015-08-27 17:19
#
# Filename: C.cpp
#
# Description:
# The people who are crazy enough to think they can change the world, are the ones who do !
=============================================================================*/
#
#include<iostream>
#include<sstream>
#include<algorithm>
#include<cstdio>
#include<string.h>
#include<cctype>
#include<string>
#include<cmath>
#include<vector>
#include<stack>
#include<queue>
#include<map>
#include<set>
using namespace std;
const int INF=800;
int n;
int from[INF],tot;
bool use[INF];
vector<int>G[INF];
bool match(int x)
{
for(int i=0;i<G[x].size();i++)
{
if(!use[G[x][i]])
{
use[G[x][i]]=1;
if(from[G[x][i]]==-1||match(from[G[x][i]]))
{
from[G[x][i]]=x;
return 1;
}
}
}
return 0;
}
int hungary( )
{
tot=0;
memset(from,255,sizeof(from));
for(int i=0;i<n;i++)
{
memset(use,0,sizeof(use));
if(match(i))
{
++tot;
}
}
return tot;
}
int main(){
int x, y;
while(cin>>n){
for(int i = 0; i < n; i++){
scanf("%d: (%d)",&x, &y);
for(int j = 0; j < y; j++){
int a;
scanf("%d",&a);
G[x].push_back(a);
}
}
cout<<n - hungary() / 2<<endl;
for(int i = 0; i < INF; i++){
G[i].clear();
}
}
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
poj 1466 HDU 1068 Girls and Boys (最大独立集)
原文地址:http://blog.csdn.net/lsgqjh/article/details/48030689