poj2352,Poj_2536 Gopher II -二分圖建圖

 2023-11-18 阅读 26 评论 0

摘要:題目:有m個洞,n知動物,每個洞容一知動物,問當天敵來后最少有多少知動物不能逃亡。 沒看清楚最后的輸出,被坑了幾發 /************************************************ Author :DarkTong Created Time :2016/7/31 16:12:15 File Name :P

題目:有m個洞,n知動物,每個洞容一知動物,問當天敵來后最少有多少知動物不能逃亡。

沒看清楚最后的輸出,被坑了幾發

/************************************************
Author        :DarkTong
Created Time  :2016/7/31 16:12:15
File Name     :Pos_2536.cpp
*************************************************///#include <bits/stdc++.h>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
#define min(a, b) a<b?a:b
#define max(a, b) a>b?a:b
#define esp 1e-9
const int maxn = 100 + 10;
int w[maxn][maxn], n, m;
int Left[maxn];
bool used[maxn];
bool match(int j)
{for(int i=1;i<=n;++i) if(w[i][j]&&!used[i]){used[i] = true;if(!Left[i]||match(Left[i])){Left[i] = j;return true;}}return false;
}
//返回最大匹配數
int hungary()
{int res=0;memset(Left, 0, sizeof(Left));for(int i=1;i<=m;++i){memset(used, 0, sizeof(used));if(match(i)) res++;}return res;
}
double gx[maxn], gy[maxn], hx[maxn], hy[maxn];int main()
{int T, cas=1;int s, v;while(scanf("%d%d%d%d", &n, &m, &s, &v)==4){memset(w, 0, sizeof(w));for(int i=1;i<=n;++i) scanf("%lf%lf", &gx[i], &gy[i]);for(int i=1;i<=m;++i) scanf("%lf%lf", &hx[i], &hy[i]);for(int i=1;i<=n;++i)for(int j=1;j<=m;++j){double l = (hx[j]-gx[i])*(hx[j]-gx[i]) +(hy[j]-gy[i])*(hy[j]-gy[i]);l = sqrt(l);if((double)s*v>=l) w[i][j]=1;}printf("%d\n", n-hungary());}return 0;
}

轉載于:https://www.cnblogs.com/DarkTong/p/5723378.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/174628.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息