HDU 2063 过山车

二分图匹配入门基础题,脑残的map没有初始化,导致WA了几次。不多说,上代码。。。

 1 #include<iostream>
 2 using namespace std;
 3 int visit[1500],map[1500][1500],dx[1500],dy[1500],nx,ny;
 4 int dfs(int v)
 5 {
 6     for(int i=1;i<=ny;i++)
 7     {
 8         if(map[v][i]&&!visit[i])
 9         {
10             visit[i]=true;
11             if(!dy[i]||dfs(dy[i]))
12             {
13                 dy[i]=v;
14                 dx[v]=i;
15                 return true;
16             }
17         }
18     }
19     return false;
20 }
21 int hungary()
22 {
23     int ans=0;
24     memset(dx,0,sizeof(dx));
25     memset(dy,0,sizeof(dy));
26     for(int i=1;i<=nx;i++)
27     {
28         if(!dx[i])
29         {
30             memset(visit,0,sizeof(visit));
31             ans+=dfs(i);
32         }
33     }
34     return ans;
35 }
36 int main()
37 {
38     int m,a,b;
39     while(cin>>m,m)
40     {
41         memset(map,0,sizeof(map));
42         cin>>nx>>ny;
43         while(m--)
44         {
45             cin>>a>>b;
46             map[a][b]=1;
47         }
48         cout<<hungary()<<endl;
49     }
50     return 0;
51 }

 

posted on 2013-01-27 22:20  acoderworld  阅读(43)  评论(0)    收藏  举报

导航