传送门
二分匹配,你把横的竖的分别写在两列,重叠的之间连线,然后就构成了二分图,然后所以的个数减去最大匹配数即可。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
bool p[1005][1005];
int l[1005];
bool v[1005];
int mx[1005],my[1005],nx[1005],ny[1005];
int m,n,ans;
bool go(int x)
{
for(int i=1;i<=n;i++)
{
if(p[x][i]==1&&v[i]==0)
{
v[i]=1;
if(l[i]==0||go(l[i]))
{
......
阅读全文