POJ 2536 匈牙利算法
2016-08-06 14:05
344 查看
思路:最大匹配 (很裸)
// by SiriusRen #include <cmath> #include <cstdio> #include <cstring> using namespace std; #define N 205 int n,tot=0,first ,v[N*N],next[N*N],m,s,V,vis ,fa ,ans=0; double ax ,ay ,bx ,by ; void add(int x,int y){v[tot]=y,next[tot]=first[x],first[x]=tot++;} bool dfs(int x){ for(int i=first[x];~i;i=next[i]) if(!vis[v[i]]){ vis[v[i]]=1; if(!fa[v[i]]||dfs(fa[v[i]])){ fa[v[i]]=x;return 1; } } return 0; } int main() { while(~scanf("%d%d%d%d",&n,&m,&s,&V)){ tot=ans=0,memset(fa,0,sizeof(fa)),memset(first,-1,sizeof(first)); for(int i=1;i<=n;i++)scanf("%lf%lf",&ax[i],&ay[i]); for(int i=1;i<=m;i++)scanf("%lf%lf",&bx[i],&by[i]); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(sqrt((bx[j]-ax[i])*(bx[j]-ax[i])+(by[j]-ay[i])*(by[j]-ay[i]))<=(double)s*V)add(i,n+j); for(int i=1;i<=n;i++,memset(vis,0,sizeof(vis)))if(dfs(i))ans++; printf("%d\n",n-ans); } }
相关文章推荐
- POJ 2536 二分匹配 匈牙利算法 || 网络流
- POJ2536 二分图 匈牙利算法
- POJ 1469,1274,2239,2536,2584,2446二分图的匈牙利算法(裸)
- poj 2536 Gopher II 二分匹配应用 匈牙利算法
- POJ 2536 匈牙利算法
- POJ 3020 Antenna Placement 匈牙利算法
- Pku acm 2536 Gopher II 数据结构题目解题报告(十四)---- 匈牙利算法求二分图的最大匹配
- poj 3041 匈牙利算法
- poj 3020 匈牙利算法
- POJ 2584 最大匹配。匈牙利算法
- poj 3041 二分匹配 基础题(整理版:基础知识)匈牙利算法
- POJ 2226 Muddy Fields 匈牙利算法/最小点覆盖
- POJ 3041 Asteroids 二分图匹配 匈牙利算法
- poj1469 二分图匹配,匈牙利算法的模型
- POJ 2239 Selecting Courses匈牙利算法
- poj 匈牙利二分匹配算法2239 Selecting Courses
- POJ 1274 The Perfect Stall (匈牙利算法)
- poj2536 匈牙利
- POJ 3041 Asteroids 二分图匹配 匈牙利算法
- poj3020 二分图最大匹配(匈牙利算法)