标签:
题目链接:http://poj.org/problem?id=1466
Time Limit: 5000MS | Memory Limit: 10000K | |
Total Submissions: 12026 | Accepted: 5355 |
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
#include <stdio.h> #include <string.h> #define MAX 505 int n; bool maps[MAX][MAX]; bool use[MAX]; int match[MAX]; bool DFS(int stu) { int num = 0; for(int i=0; i<n; i++) { if(!use[i]&&maps[stu][i]) { use[i] = true; if(match[i]==-1||DFS(match[i])) { match[i] = stu; return true; } } } return false; } int main() { while(scanf("%d",&n)!=EOF) { memset(match,-1,sizeof(match)); memset(maps,false,sizeof(maps)); for(int i=0; i<n; i++) { int u,num; scanf("%d: (%d)",&u,&num); for(int i=0; i<num; i++) { int v; scanf("%d",&v); maps[u][v] = true; } } int num = 0; for(int i=0; i<n; i++) { memset(use,false,sizeof(use)); if(DFS(i)) num++; } printf("%d\n",n-num/2); } return 0; }
标签:
原文地址:http://www.cnblogs.com/TreeDream/p/5760134.html