hdoj 2389 二分图 Hopcroft-Carp 模板
2016-08-05 22:25
323 查看
#include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<cstring> #include<string> #include<queue> #define lson i<<1 #define rson (i<<1)+1 #define maxn 3005 #define maxi 233333333 #define LL long long using namespace std; // -------------------------模板---------------------- int link[maxn][maxn]; int dx[maxn],dy[maxn],cx[maxn],cy[maxn],used[maxn],dis; int n,m; bool searchP() { queue<int>qu; dis = maxi; memset(dx,-1,sizeof(dx)); memset(dy,-1,sizeof(dy)); for(int i=1;i<=n;i++) if(cx[i]==-1) { qu.push(i); dx[i] = 0; } while(qu.size()) { int u = qu.front(); qu.pop(); if(dx[u]>dis)break; for(int i=1;i<=m;i++) if(link[u][i]&&dy[i]==-1) { dy[i] = dx[u]+1; if(cy[i]==-1)dis = dy[i]; else { dx[cy[i]] = dy[i]+1; qu.push(cy[i]); } } } return dis!=maxi; } int findP(int u) { for(int i=1;i<=m;i++) if(!used[i]&&link[u][i]&&dy[i]==dx[u]+1) { used[i] = 1; if(cy[i]!=-1&&dis==dy[i])continue; if(cy[i]==-1||findP(cy[i])) { cy[i] = u; cx[u] = i; return 1; } } return 0; } int match() { int ans = 0; memset(cx,-1,sizeof(cx)); memset(cy,-1,sizeof(cy)); while(searchP()) { memset(used,0,sizeof(used)); for(int i=1;i<=n;i++) if(cx[i]==-1)ans+=findP(i); } return ans; } //-------------------------分界线---------------------- struct people{ int x,y,u; }p[maxn]; struct um{ int x,y; }u[maxn]; int T; bool ok(people p1,um u1) { return (LL)T*T*p1.u*p1.u>=((LL)p1.x-u1.x)*(p1.x-u1.x)+(p1.y-u1.y)*(p1.y-u1.y); } int main() { int t,i1 = 1; scanf("%d",&t); while(t--) { scanf("%d",&T); scanf("%d",&n); for(int i=1;i<=n;i++)scanf("%d%d%d",&p[i].x,&p[i].y,&p[i].u); scanf("%d",&m); for(int i=1;i<=m;i++)scanf("%d%d",&u[i].x,&u[i].y); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) link[i][j] = ok(p[i],u[j]); printf("Scenario #%d:\n",i1); i1++; printf("%d\n\n",match()); } return 0; }
相关文章推荐
- HDOJ 2389 - Hopcroft-Carp模板二分图最大匹配
- HDU 2389 Rain on your Parade(二分匹配+Hopcroft-Carp算法模板题)
- HDU 2389 Rain on your Parade(Hopcroft-Carp算法模板)
- SPOJ 4206 Fast Maximum Matching (二分图最大匹配 Hopcroft-Carp 算法 模板)
- [模板]二分图算法-Hopcroft-Carp
- HDU 2389 Rain on your Parade (二分图匹配(Hopcroft-Carp的算法模板))
- Rain on your Parade HDU - 2389 Hopcroft_Carp模板
- hdu 2389 Rain on your Parade(二分匹配Hopcroft-Carp算法模版)
- HDU-2389 Rain on your Parade(二分图之Hopcroft-Karp算法)
- 二分图匹配——Hopcroft-Carp算法模板
- hdoj 2063 过山车 (二分图-最大匹配模板)
- HDU2389 Rain on your Parade 二分匹配 Hopcroft-Carp的算法+模版
- hdu 2389 Rain on your Parade(二分图最大匹配,Hopcroft-Karp)
- HDU 2389 Rain on your Parade(二分匹配,Hopcroft-Carp算法)
- SPOJ Fast Maximum Matching(二分图最大匹配Hopcroft-Carp)
- kuangbin专题十 HDU2389(Hopcroft-Carp的算法模板)
- HDU 2389 Rain on your Parade(Hopcroft-Carp算法板子题)
- HDOJ题目1068Girls and Boys(二分图最大独立集,匈牙利算法模板)
- hdu 2389 Rain on your Parade (二分图,Hopcroft-Karp)
- Hopcroft-Carp算法模板【二分图匹配】