北大OJ2536

#include<stdio.h>
#include<stdlib.h>
#include<memory.h>
int n,m,s,v;
int map[101][101];
bool vist[101];
int match[101];
struct gorphers
{
	double x,y;
};
gorphers A[101],B[101];
bool DFS(int u)
{
	for(int v=1;v<=m;v++)
	{
		if(!vist[v]&&map[u][v])
		{
			vist[v]=true;
			if(match[v]==0||DFS(match[v]))
			{
				match[v]=u;
				return true;
			}
		}
	}
	return false;
}
int main()
{
	int i,j,sum;
	double d;
	while(scanf("%d%d%d%d",&n,&m,&s,&v)!=EOF)
	{
		d=v*s*v*s;
		for(i=1;i<=n;i++)
			scanf("%lf%lf",&A[i].x,&A[i].y);
		for(j=1;j<=m;j++)
			scanf("%lf%lf",&B[j].x,&B[j].y);
        memset(map,0,sizeof(map));
		memset(match,0,sizeof(match)); 
		for(i=1;i<=n;i++)
		{
			for(j=1;j<=m;j++)
			{
     if(((B[j].y-A[i].y)*(B[j].y-A[i].y)+(B[j].x-A[i].x)*(B[j].x-A[i].x))<=d)
					  map[i][j]=1;
			}
		}
		sum=0;
		for(i=1;i<=n;i++)
		{
			memset(vist,false,sizeof(vist));
			if(DFS(i))
				sum++;
		}
		printf("%d\n",n-sum);
	}
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章