hdu1054二分图的最大匹配
今天又做到了二分图的最大匹配的模板题感觉也可以dp做
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1054
代码还是模板就可以了。
1 #include<stdio.h> 2 #include<cstring> 3 #include<string> 4 int map[1505][1505]; 5 int vis[1505]; 6 int mark[1505]; 7 int n; 8 int km(int x) 9 { 10 for(int i = 0; i < n; i++) 11 { 12 if(!map[x][i] || vis[i]) 13 continue; 14 vis[i] = 1; 15 if(!mark[i] || km(mark[i])) 16 { 17 mark[i] = x; 18 return 1; 19 } 20 } 21 return 0; 22 } 23 int main() 24 { 25 while(~scanf("%d", &n)) 26 { 27 memset(mark, 0, sizeof(mark)); 28 memset(map, 0, sizeof(map)); 29 memset(vis, 0, sizeof(vis)); 30 for(int i = 0; i < n; i++) 31 { 32 int x, t; 33 scanf("%d:(%d)", &x, &t); 34 while(t--) 35 { 36 int m; 37 scanf("%d", &m); 38 map[x][m] = 1; 39 map[m][x] = 1; 40 } 41 } 42 int sum = 0; 43 for(int i = 0; i < n; i++) 44 { 45 memset(vis, 0, sizeof(vis)); 46 if(km(i)) 47 sum++; 48 } 49 printf("%d\n", sum / 2); 50 } 51 return 0; 52 }