无权二分图最佳匹配问题:.......................................................1
最大流问题...................................................................................3
寻找最近点对...............................................................................8
寻找最远点对...............................................................................9
凸包:.........................................................................................10
判断线段相交.............................................................................13
判断两个凸多边形是否相交.....................................................14
/* 计算几何基本模板 */..............................................................16
/* FFT(快速傅里叶变换)求卷积 */............................................20
/*
无权二分图最佳匹配问题:
给定两个点集,点集 a 内的点各自与点集 b 内的点相匹配,求最多能够匹配的点数
最小点覆盖问题和无权二分图匹配问题一样!!!
二分图的最小顶点覆盖数=二分图的最大匹配数
二分图的最小路径覆盖数=|V|-二分图的最大匹配数
*/
/*
匈牙利算法 DFS 版,邻接表形式
添加节点时用 g[i].push_back[j]
*/
#define maxn 1005
int n;
vector<int> g[maxn];
int match[maxn];//记录匹配点
bool vis[maxn];//记录是否访问
bool dfs(int u)
{
for (int i=0; i<g[u].size(); ++i) {
int v=g[u][i];
if(!vis[v]) {
vis[v] = 1;
if(match[v]==-1 || dfs(match[v])) {
match[v] = u;
1