poj1274 二分图匹配入门题
直接套用匈牙利算法就OK了。非常简单,非常适合入门。当时复习匈牙利算法了。好了,图论算法先适可而止吧。。。因为校赛上面不会出得太难的,下一步要去看动态规划和贪心了。。加油加油!!
/* * ===================================================================================== * * Filename: main.cpp * * Description: poj1274 * * Version: 1.0 * Created: 2012/5/6 11:05:09 * Revision: none * Compiler: gcc * * Author: Jason Damon * Organization: XD University * * ===================================================================================== */ #include <stdlib.h> #include <iostream> #include <fstream> using namespace std; #define MAXN 201 int map[MAXN][MAXN],link[MAXN]; bool vist[MAXN]; int n,m,cnt; int dfs(int x) { int i; for(i=1; i<=n; i++) { if(!vist[i] && map[x][i]) { vist[i]=true; if(link[i]==0 || dfs(link[i])) { link[i]=x; return true; } } } return false; } void Hungary() { int i; cnt=0; for(i=1; i<=n; i++) { memset(vist,false,sizeof(vist)); if(dfs(i)) { cnt++; } } } int main() { int i,j,k,to; freopen("in.txt","r",stdin); while(scanf("%d%d",&n,&m)!=EOF) { memset(map,0,sizeof(map)); memset(link,0,sizeof(link)); for(i=1; i<=n; i++) { scanf("%d",&k); for(j=1; j<=k; j++) { scanf("%d",&to); map[i][to]=1; } } Hungary(); printf("%d\n",cnt); } return 0; }
我是一名在校大学生,热爱编程,虽然起步晚了些,但我会努力的。呵呵!
数据结构 算法