您的位置:首页 > 其它

hdu 4160 Dolls 二分图最小路径覆盖

2013-05-16 18:10 477 查看
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
#define max 501

struct node {
int wi,li,hi;
};

node doll[max];
bool map[max][max];
bool mark[max];
int link[max];
int n;

int findpath(int u) //寻找增广路径
{
int i;
for(i=0;i<n;i++)
{
if(map[u][i] && !mark[i])
{
mark[i]=1;
if(link[i]==-1 || findpath(link[i]))
{
link[i]=u;
return 1;
}
}
}
return 0;
}

void maxmatch()
{
int i;
int res=0;

for(i=0;i<n;i++)
{
memset(mark,false,sizeof(mark));
res += findpath(i);
}
cout<<n-res<<endl;

}

int main()
{
int i,j,k;
while(cin>>n,n)
{
memset(map,false,sizeof(map));
memset(link,-1,sizeof(link));

for(i=0;i<n;i++)
{
cin>>doll[i].wi>>doll[i].li>>doll[i].hi;
}

for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(doll[i].wi>doll[j].wi && doll[i].li>doll[j].li && doll[i].hi>doll[j].hi)
{
map[i][j]=1;
}
}
}

maxmatch();

}
return 0;
}


题目 http://acm.hdu.edu.cn/showproblem.php?pid=4160
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: