hoj 3008 Matryoshka Dolls Again 最大独立子集

 

/*

 

 

 

题目:

 

       当一个洋娃娃的长宽高都比另一个大时,小的那个可以被套进去,问在最外面的洋娃娃的

 

       最小个数

 

 

 

分析:

 

       求最大独立集,用娃娃总数-最大匹配即可,用两层循环先建图,每当娃娃i长宽高都比j小时,

 

       g[i][j] = true建图即可,开始时我竟然先对它进行排序,后来才发现是不用的。。。直接

 

       两层循环再比较即可建图。求最大匹配就是纯粹的hungy算法

 

 

 

*/

 

#include <iostream>

 

#include <cstring>

 

#include <cstdio>

 

using namespace std;

 

#define X 502

 

int xm[X],ym[X],n,m;

 

bool g[X][X],use[X];

 

struct node

 

{

 

       int a,b,c;

 

}p[X];

 

bool dfs(int u)

 

{

 

       for(int v=1;v<=n;v++)

 

              if(g[u][v]&&!use[v])

 

              {

 

                     use[v] = true;

 

                     if(ym[v]==-1||dfs(ym[v]))

 

                     {

 

                            xm[u] = v;

 

                            ym[v] = u;

 

                            return true;

 

                     }

 

              }

 

              return false;

 

}

 

int hungry()

 

{

 

       memset(xm,-1,sizeof(xm));

 

       memset(ym,-1,sizeof(ym));

 

       int ret = 0;

 

       for(int u=1;u<=n;u++)

 

              if(xm[u]==-1)

 

              {

 

                     memset(use,false,sizeof(use));

 

                     if(dfs(u))

 

                            ret++;

 

              }

 

              return ret;

 

}

 

int main()

 

{

 

       freopen("sum.in","r",stdin);

 

       freopen("sum.out","w",stdout);

 

       while(cin>>n,n)

 

       {

 

              for(int i=1;i<=n;i++)

 

                     scanf("%d%d%d",&p[i].a,&p[i].b,&p[i].c);

 

              memset(g,false,sizeof(g));

 

              for(int i=1;i<=n;i++)  //建图

 

                     for(int j=1;j<=n;j++)

 

                            if(i!=j&&p[j].a>p[i].a&&p[j].b>p[i].b&&p[j].c>p[i].c)//当三者均满足时

 

                                   g[j][i] = true;

 

              printf("%d\n",n-hungry());

 

       }

 

 

 

       return 0;

 

}

 

posted @ 2012-04-07 16:03  yejinru  阅读(401)  评论(0编辑  收藏  举报