hdu 4160 Dolls
2013-05-13 09:51
573 查看
建图:把可以装进去的建立连接。
然后,就是很裸的二分匹配了。。。
然后,就是很裸的二分匹配了。。。
#include<iostream> #include<cstring> #include<cstdlib> using namespace std; int n; int g[505][505]; int vis[505]; int link[505]; struct Doll { int w,l,h; }d[505]; void judge(Doll a,Doll b,int i,int j) { if( a.w<b.w && a.l<b.l && a.h<b.h ) g[i][j]=1; else if( a.w>b.w && a.l>b.l && a.h>b.h ) g[j][i]=1; } int dfs(int u) { for(int i=0;i<n;i++) if(g[u][i]&&!vis[i]) { vis[i]=1; if(link[i]==-1||dfs(link[i])) { link[i]=u; return 1; } } return 0; } int hungary() { int m=0; memset(link,-1,sizeof(link)); for(int i=0;i<n;i++) { memset(vis,0,sizeof(vis)); if(dfs(i)) m++; } return m; } int main() { while(scanf("%d",&n)==1 && n) { for(int i=0;i<n;i++) scanf("%d %d %d",&d[i].w,&d[i].l,&d[i].h); memset(g,0,sizeof(g)); for(int i=0;i<n;i++) for(int j=i+1;j<n;j++) judge(d[i],d[j],i,j); int maxMatch=hungary(); printf("%d\n",n-maxMatch); } return 0; }
相关文章推荐
- HDU 4160 Dolls(DAG最小路径覆盖)
- Hdu 4160 Dolls
- hdu 4160 dolls 最少路径覆盖
- hdu 4160 Dolls【最小路径覆盖----二分匹配】
- hdu 4160 Dolls 二分图最小路径覆盖
- 【二分图匹配】hdu 4160 Dolls
- HDU 4160 Dolls (二分图)
- hdu 4160 Dolls (最大独立)
- HDU 4160 — Dolls 最小路径覆盖
- hdu 4160 Dolls (最大独立)
- hdu 4160 Dolls
- HDU 4160 Dolls (最小路径覆盖=顶点数-最大匹配数)
- hdu 4160 (Dolls)二分图的最小路径覆盖
- HDU 4160 Dolls 匈牙利算法求最大匹配数
- HDU 4160 Dolls(二分图匹配+匈牙利算法+最小路径覆盖)
- HDU 4160 Dolls(DAG最小路径覆盖)
- HDU 4160 Dolls(DAG最小路径覆盖)
- HDU 4160 Dolls 【最小路径覆盖】
- [hdu 4160] Dolls(最小路径覆盖)
- HDU 4160 Dolls 最小路径覆盖