码迷,mamicode.com
首页 > 其他好文 > 详细

POJ 2239

时间:2015-06-10 18:56:23      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:

 1             #include<iostream>
 2             #include<algorithm>
 3             #define MAXN 305
 4             using namespace std;
 5 
 6             int _m[MAXN][MAXN];
 7             int time[8][15];
 8             int match[MAXN];
 9             bool ck[MAXN];
10 
11             bool search(int a,int b,int x)
12             { 
13                 int i;
14                 int t;
15                     for ( i = 0 ; i < b ; i++)            
16                     if (_m[x][i] && ! ck[i])            
17                     {
18                         ck[i] = true;                    
19                         t = match[i];                
20                         match[i] = x;                    
21                         if (t == -1 || search(a,b,t))   
22                             return true;            
23                         match[i] = t;                
24                     }      
25                 return false;
26             }
27  
28             int hungary(int a,int b)    
29             {
30                 memset(match,-1,sizeof(match));
31                 int max_match = 0;
32                 int i;
33                 for ( i = 0 ; i < a ; i++)
34                 {
35                     memset(ck,false,sizeof(ck));    
36                     if (search(a,b,i)) 
37                         max_match++;            
38                 }    
39                 return max_match;
40             }
41 
42             int main()
43             {
44                 //freopen("acm.acm","r",stdin);
45                 int n;
46                 int num;
47                 int i;
48                 int j;
49                 int u;
50                 int v;
51                 int k;
52                 int node_num = 0;
53                 while(cin>>n)
54                 {
55                 node_num = 0;
56                 memset(_m,0,sizeof(_m) );
57                 memset(time,-1,sizeof(time));
58                 for(k = 0; k < n; ++ k)
59                 {
60                     cin>>num;
61                     for(i = 0; i < num; ++ i)
62                     {
63                         cin>>u>>v;
64                         -- u;
65                         -- v;
66                         if(time[u][v] == -1)
67                         {
68                             time[u][v] = node_num ++;
69                             _m[k][time[u][v]] = 1;
70                         }
71                         else
72                         {
73                             _m[k][time[u][v]] = 1;
74                         }
75                     }
76                 }
77                 cout<<hungary(n,node_num)<<endl;
78                 }
79 
80             }

 

POJ 2239

标签:

原文地址:http://www.cnblogs.com/gavinsp/p/4566726.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!