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