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 }

 

 

posted on 2013-12-13 18:18  Arthas0v0  阅读(141)  评论(0编辑  收藏  举报

导航