BZOJ4443



裸裸的二分图匹配 结果我上来先给排了序 无限WA

#include
#include
#include
#include
#include
#include
#define maxn 250

using namespace std;

struct node
{
	int w;
	int x,y;
}q[100010];

int b[maxn][maxn];
int lk[maxn];
int a[maxn][maxn];
bool vis[maxn];
int n,m,num,k,tot;

bool find(int x)
{
	for (int i=1;i<=m;i++)
	  if (a[x][i] && !vis[i])
	  {
	  	vis[i]=1;
	  	if (!lk[i] || find(lk[i]))
	  	{
	  		lk[i]=x;
	  		return 1;
	  	}
	  }
	return 0;
}

bool check(int x)
{
	memset(lk,0,sizeof(lk));
	memset(a,0,sizeof(a));
	for (int i=1;i<=tot;i++) if (q[i].x!=q[x].x && q[i].y!=q[x].y && q[i].w<=q[x].w) a[q[i].x][q[i].y]=1;
	int ans=0;
	for (int i=1;i<=n;i++)
	{
		memset(vis,0,sizeof(vis));
		if (find(i)) ans++;
	}
	if (ans>=n-k) return 1; else return 0;
}

bool cmp(node x,node y)
{
	return x.w


你可能感兴趣的:(二分图)