Qiuqiqiu  
不管道路多么崎岖坎坷,我永远不停下追逐梦想的脚步!

http://acm.hdu.edu.cn/showproblem.php?pid=2063

来个邻接表的,当然邻接矩阵更简单

View Code
 1 #include <cstdio>
 2 #include <cstring>
 3 using namespace std;
 4 
 5 const int N=510, M=1100;
 6 int u[M],v[M],next[M],first[N],n;
 7 int mat[N];
 8 bool vis[N];
 9 bool find(int ue)
10 {
11     for(int e=first[ue];e!=-1;e=next[e]) if(!vis[v[e]])
12     {
13         int ve=v[e];
14         vis[ve]=1;
15         if(mat[ve]==-1 || find(mat[ve]))
16         {
17             mat[ve]=ue;
18             return 1;
19         }
20     }
21     return 0;
22 }
23 int maxmatch()
24 {
25     int cnt=0;
26     memset(mat,-1,sizeof(mat));
27     for(int i=1;i<=n;i++)
28     {
29         memset(vis,0,sizeof(vis));
30         if(find(i)) cnt++;
31     }
32     return cnt;
33 }
34 int main()
35 {
36     int m,k;
37     while(scanf("%d%d%d",&m,&n,&k),m)
38     {
39         memset(first,-1,sizeof(first));
40         for(int e=0;e<m;e++)
41         {
42             scanf("%d%d",&u[e],&v[e]);
43             next[e]=first[u[e]];
44             first[u[e]]=e;
45         }
46         int ans=maxmatch();
47         printf("%d\n",ans);
48     }
49     return 0;
50 }

 

posted on 2012-04-19 15:46  Qiuqiqiu  阅读(216)  评论(0编辑  收藏  举报