题目大意见紫书P381。
这道题是比较明显的二分图建模吧, 这类题的建模思维很常见, 对于每个点, 对应的横纵坐标只需要选一个点, 那么将横纵坐标看作在二分图两边的两个点然后连边即可, 只是这题有障碍物所以不能单纯的按上面提到的横纵坐标来, 要经过处理。
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <cmath>
#include <string>
#include <cctype>
#include <cstdio>
#include <vector>
#include <cstdlib>
#include <cstring>
#include <iomanip>
#include <sstream>
#include <iostream>
#include <algorithm>
using namespace std;
#define ls id<<1,l,mid
#define rs id<<1|1,mid+1,r
#define OFF(x) memset(x,-1,sizeof x)
#define CLR(x) memset(x,0,sizeof x)
#define MEM(x) memset(x,0x3f,sizeof x)
typedef long long ll ;
typedef pair<int,int> pii ;
const int maxn = 2500+50 ;
const int maxm = maxn * maxn;