FZU 1341 & POJ 2536 (二分图)
2016-04-27 16:51
218 查看
#include<map> #include<queue> #include<cmath> #include<cstdio> #include<stack> #include<iostream> #include<cstring> #include<algorithm> #define LL int #define inf 0x3f3f3f3f #define eps 1e-8 #include<vector> #define ls l,mid,rt<<1 #define rs mid+1,r,rt<<1|1 using namespace std; struct node{ double x,y; }q1[110],q2[110]; int cro[1010],c,d,v,cnt,n,m; bool vis[1010],mp[1000][1000]; double dis(int i,int j){ return sqrt( (q1[i].x-q2[j].x)*(q1[i].x-q2[j].x)+(q1[i].y-q2[j].y)*(q1[i].y-q2[j].y) ); } int dfs(int u) { int i,j,k; for(i=0;i <m;i++) { if(!vis[i]&&mp[u][i]) { vis[i]=true; if(cro[i]==-1||dfs(cro[i])) { cro[i]=u; return 1; } } } return 0; } int main(){ int i,j,k,cla,s,v; while(~scanf("%d%d%d%d",&n,&m,&s,&v)){ memset(mp,false,sizeof(mp)); for(i = 0;i < n;++i){ double x,y; scanf("%lf%lf",&x,&y); q1[i].x =x; q1[i].y =y; } for(i = 0;i <m;++ i){ double x,y; scanf("%lf%lf",&x,&y); q2[i].x =x; q2[i].y =y; } for(i = 0;i < n;++ i){ for(j = 0;j < m;++ j){ double di = dis(i,j); double tmp =(double) s*v; if(di/v - s <= eps) mp[i][j] = true; } } int ans=0; memset(cro,-1,sizeof(cro)); for(i = 0;i < n;++ i){ memset(vis,false,sizeof(vis)); if(dfs(i)) ans++; } printf("%d\n",n-ans); } return 0; }
相关文章推荐
- Bad Horse - Practice Round China New Grad Test 2014 - BFS - 二分图判定
- hdu 1281 二分图匹配求匹配边以及增广链
- 二分图不带权匹配
- Codeforce 85E (二分答案+二分图染色)
- 无向图的最小边覆盖
- Hdu2063—过山车 二分图最大匹配
- Codeforces498C解题报告
- poj_3041
- uva 1201
- uva12083
- hdu 2255
- 棋盘游戏
- [Usaco2011 Nov]Cow Steeplechase奶牛越野跑(二分图裸题)
- 【图论-二分图】学生的住宿
- hdu2603
- hdu4619
- 匈牙利算法
- POJ2446 CHESSBOARD
- POJ 2112 (二分图多重匹配)
- uva10004 Bicoloring 二分图染色