zoukankan      html  css  js  c++  java
  • POJ 2536 Gopher II(二分图的最大匹配)

    题目链接:http://poj.org/problem?id=2536


    题意:已知有n仅仅老鼠的坐标,m个洞的坐标,老鼠的移动速度为V,S秒以后有一仅仅老鹰要吃老鼠,问有多少个老鼠被吃。

    非常明晰,二分匹配,老鼠为X集合,洞为Y集合


    思路:计算当前老鼠 Xi 到达洞 Yi 的时间(dis/v),假设小于S的话,则Xi与Yi联通,


    被吃的老鼠数 = n - 最大匹配数


    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <algorithm>
    #include <math.h>
    #define init(a) memset(a,0,sizeof(a))
    #define PI acos(-1,0)
    using namespace std;
    const int maxn = 310;
    const int maxm = 100001;
    #define lson left, m, id<<1
    #define rson m+1, right, id<<1|1
    #define min(a,b) (a>b)?b:a
    #define max(a,b) (a>b)?a:b
    
    int n,m,s,v,ma[500][500];
    bool vis[500];
    int line[500];
    struct node
    {
      double x,y;
    };
    node g[300],h[300];
    
    int DFS(int u)
    {
      for(int v = 1;v<=m;v++)
        {
        if(!vis[v]&&ma[u][v])
        {
          vis[v]=1;
          if(line[v]==-1 || DFS(line[v]))
        {
            line[v] = u;
            return 1;
          }
        }
      }
      return 0;
    }
    int K_M()
    {
        memset(line,-1,sizeof(line));
        int ans=0;
        for(int i = 1;i<=n;i++)
        {
          init(vis);
          ans += DFS(i);
        }
        return ans;
    }
    int main()
    {
      while(scanf("%d%d%d%d",&n,&m,&s,&v)!=EOF)
        {
        init(ma);
        for(int i=1;i<=n;i++)
        {
          scanf("%lf%lf",&g[i].x,&g[i].y);
        }
        for(int i=1;i<=m;i++)
        {
          scanf("%lf%lf",&h[i].x,&h[i].y);
        }
        for(int i=1;i<=n;i++)
        {
          for(int j=1;j<=m;j++)
            {
      double dis = sqrt((h[j].x-g[i].x)*(h[j].x-g[i].x)+(h[j].y-g[i].y)*(h[j].y-g[i].y));//老鼠与洞的距离
    
            if(dis / v <= (double)s)//老鼠到达洞的时间<S
                {
                    ma[i][j] = 1;
                }
            }
        }
        int ans = K_M();
        printf("%d
    ",n - ans);
      }
      return 0;
    }


  • 相关阅读:
    requests模块
    爬虫基础
    forms组件
    分页器组件
    cookie与session组件
    Auth模块
    中间件组件
    git
    Ajax
    《Java程序设计》实验二 实验报告
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/3964414.html
Copyright © 2011-2022 走看看