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) 收藏 举报
浙公网安备 33010602011771号