IT民工
加油!
摘要: 这道题要我们找到p门课和n个学生是否存在一种关系,即在一个集合中的学生,每人代表一门课,每门课在这个集合中也有一个代表。求的的最大匹配数是否等于课程总数。#include<cstdio>#include<cstring>#include<cstdlib>#define MAXN 305bool map[105][MAXN], vis[MAXN];int link[MAXN];int p, n;bool dfs(int u){ int v; for( v = 1; v <= n; v++) if( map[u][v] && !vis[v] 阅读全文
posted @ 2012-04-03 22:06 找回失去的 阅读(164) 评论(0) 推荐(0)
摘要: http://poj.org/problem?id=1422题意:派一些伞兵去那个镇里,要到达所有的路口,有一些或者没有伞兵可以不去那些路口,只要其他人能完成这个任务。每个在一个路口着陆了的伞兵可以沿着街去到其他路口。我们的任务是求出去执行任务的伞兵最少可以是多少个。一个路径覆盖的问题:在一个有向图中,路径覆盖就是在图中找一些路径,使之覆盖了图中的所有顶点,且任何一个顶点有且只有一条路径与之关联;(如果把这些路径中的每条路径从它的起始点走到它的终点,那么恰好可以经过图中的每个顶点一次且仅一次);同样是求出二分图最大匹配数,代码和刚才的差不多,有这样一个公式 //最小路径覆盖 = 顶点... 阅读全文
posted @ 2012-04-03 16:48 找回失去的 阅读(414) 评论(0) 推荐(0)
摘要: 以下内容转自http://imlazy.ycool.com/post.1603708.html什么是二分图,什么是二分图的最大匹配,这些定义我就不讲了,网上随便都找得到。二分图的最大匹配有两种求法,第一种是最大流(我在此假设读者已有网络流的知识);第二种就是我现在要讲的匈牙利算法。这个算法说白了就是最大流的算法,但是它跟据二分图匹配这个问题的特点,把最大流算法做了简化,提高了效率。匈牙利算法其实很简单,但是网上搜不到什么说得清楚的文章。所以我决定要写一下。最大流算法的核心问题就是找增广路径(augment path)。匈牙利算法也不例外,它的基本模式就是:初始时最大匹配为空while 找得到增 阅读全文
posted @ 2012-04-03 16:09 找回失去的 阅读(193) 评论(0) 推荐(0)