您的位置:首页 > 其它

北大OJ2536

2015-12-08 20:46 281 查看
#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  acm 算法