二分图
youthinkwu
这个作者很懒,什么都没留下…
展开
-
POJ 2536 Gopher II
题意:有n个gophers和m个gophers的洞,hawk会抓他们,一个洞只能进一只gopher,现在给出gophers的坐标和洞的坐标,以及hawk的飞行时间和速度,求能被抓的gopher个数。 解法:二分图最大匹配,建图是这样的,gopher跟洞之间的距离如果小于hawk的路程,则说明这个gopher可以到达这个洞,于是连一条边。然后匈牙利就可以了。#include <iostream> #原创 2015-02-21 17:47:30 · 257 阅读 · 0 评论 -
POJ 1274 The Perfect Stall
题意:有N头牛和M个槽,每头牛都有几个愿意去的槽,一个槽只能给一头牛,现在问最多能有几头牛能到槽里。 解法:二分图最大匹配。#include <iostream> #include <cstring> #include <cstdio> #include <algorithm> const int maxn = 300; int g[maxn][maxn],match[maxn],n,m; boo原创 2015-02-21 17:38:40 · 205 阅读 · 0 评论 -
二分图
设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则称图G为一个二分图。二分图判定: BFS就可以,一边搜一边给点上色,遇到相邻的点。如果没上色,则给它上不同的颜色,并且加入队列。如果有颜色了,判断跟现在的点颜色是否一样,一样则说明不是二分图。 例题:http:/原创 2015-04-25 22:47:06 · 200 阅读 · 0 评论 -
POJ 3041 Asteroids
题意:有N*N的格子,格子上有’X’代表障碍物,现在有一些炸药,一个炸药可以炸一行或一列。求把所有障碍物消灭使用的最少的炸药数目。 题解:二分图的最小点覆盖问题,行号作为一点集,列号作为另一点集。当某个格子是’X’的时候,该行跟该列连一条边。最小点覆盖等于最大匹配,跑一遍最大匹配。#include <iostream> #include <cstring> #include <cstdio> #i原创 2015-04-26 00:04:12 · 235 阅读 · 0 评论 -
POJ 1325 Machine Schedule
题意: 有两台机器A,B,A机器有n种模式,B机器有m种模式,有k个作业,每个作业可以通过A的某个模式来做也可以通过B的某个模式来做,AB两台机器切换模式需要重启,求最小的重启次数。 解法:A,B其实是二分图的两个点集合,可以写同一个作业的两个模式连一条边,这里是求最小点覆盖,最小点覆盖等于最大匹配,跑一遍最大匹配就是答案了。#include <iostream> #include <cstrin原创 2015-04-25 23:39:51 · 357 阅读 · 0 评论