当前位置: 首页 > news >正文

POJ 2536 Gopher II

二分图的最大匹配

地鼠内部和地鼠洞内部都是没有边相连的,那么就可以看成一个二分图。地鼠如果可以跑到那个地鼠洞,就连一条边,然后跑二分图的最大匹配,最后地鼠的数量减去最大匹配数就是答案。

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;

const int MAXN=505;
int nx,ny;
int g[MAXN][MAXN];
int cx[MAXN],cy[MAXN];
int mk[MAXN];
int n;
double s,v;
double H=1e-8;

struct P
{
    double x,y;
} M[MAXN],D[MAXN];

int path(int u)
{
    for(int v=0; v<ny; v++)
    {
        if(g[u][v]&&!mk[v])
        {
            mk[v]=1;
            if(cy[v]==-1||path(cy[v]))
            {
                cx[u]=v;
                cy[v]=u;
                return 1;
            }
        }
    }
    return 0;
}

int MaxMatch()
{
    int res=0;
    memset(cx,-1,sizeof(cx));
    memset(cy,-1,sizeof(cy));
    for(int i=0; i<nx; i++)
    {
        if(cx[i]==-1)
        {
            memset(mk,0,sizeof(mk));
            res=res+path(i);
        }
    }
    return res;
}

bool ok(const P&a,const P&b)
{
    if(s*v-sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y))>=H)
        return 1;
    return 0;
}

int main()
{
    int i,j;
    while(~scanf("%d%d%lf%lf",&nx,&ny,&s,&v))
    {
        memset(g,0,sizeof(g));
        for(i=0; i<nx; i++)
            scanf("%lf%lf",&M[i].x,&M[i].y);
        for(i=0; i<ny; i++)
            scanf("%lf%lf",&D[i].x,&D[i].y);
        for(i=0; i<nx; i++)
            for(j=0; j<ny; j++)
                if(ok(M[i],D[j]))
                    g[i][j]=1;
        printf("%d\n",nx-MaxMatch());
    }
    return 0;
}

 

转载于:https://www.cnblogs.com/zufezzt/p/4693902.html

相关文章:

  • HDU-1043 Eight(经典八数码问题, A*+康拓+曼哈顿距离+逆序数判断可解性、双向搜索)
  • codeforces-510E Fox And Dinner(带限制的二分图多重匹配+奇偶建图+打印路径)
  • C-Cleaning Pipes(判断两线段相交+二分图判定) 2015-2016 Northwestern European Regional Contest (NWERC 2015)
  • eclipse the user operation is waiting for building workspace to complete
  • 2-SAT 题目整理
  • 64位windows2003 未在本地计算机上注册 microsoft.jet.oledb.4.0 提供程序
  • HDU-5950 Recursive sequence(矩阵乘法)
  • “互联网+”引发IT人才招工荒-新华网安徽频道
  • Java从文件读入以及读出至文件
  • HDU-5963 朋友(树上博弈)
  • HDU 6005 Pandaland(无向图最小环)
  • Cura源码在Ubuntu15.04上编译脚本(成功)
  • SPOJ - CHICAGO 106 miles to Chicago(乘积最短路)
  • HTML5之FileReader的使用
  • LeetCode 202 Happy Number(floyd判圈算法(龟兔赛跑算法))
  • “大数据应用场景”之隔壁老王(连载四)
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • canvas 绘制双线技巧
  • EOS是什么
  • jdbc就是这么简单
  • Js基础知识(四) - js运行原理与机制
  • Median of Two Sorted Arrays
  • Vue全家桶实现一个Web App
  • 多线程事务回滚
  • 翻译:Hystrix - How To Use
  • 技术胖1-4季视频复习— (看视频笔记)
  • 前端攻城师
  • 新手搭建网站的主要流程
  • 一道闭包题引发的思考
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • ​Python 3 新特性:类型注解
  • #前后端分离# 头条发布系统
  • (39)STM32——FLASH闪存
  • (Python) SOAP Web Service (HTTP POST)
  • (zhuan) 一些RL的文献(及笔记)
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (篇九)MySQL常用内置函数
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (原創) 未来三学期想要修的课 (日記)
  • . Flume面试题
  • .describe() python_Python-Win32com-Excel
  • .java 9 找不到符号_java找不到符号
  • .Net FrameWork总结
  • .net Stream篇(六)
  • .Net 代码性能 - (1)
  • .net 托管代码与非托管代码
  • .NetCore项目nginx发布
  • .NET委托:一个关于C#的睡前故事
  • @property python知乎_Python3基础之:property
  • [@Controller]4 详解@ModelAttribute
  • [④ADRV902x]: Digital Filter Configuration(发射端)
  • [Android] 240204批量生成联系人,短信,通话记录的APK
  • [Android学习笔记]ScrollView的使用