ArcTan

dfs
随笔 - 16, 文章 - 117, 评论 - 6, 引用 - 0
数据加载中……

poj1419(最大团、最大独立集)

http://poj.org/problem?id=1419

显然的最大独立集,我晕啊,最大团没有学好啊,没有真正理解清楚
哎哎
模版题,最大独立集:
#include<stdio.h>
#include
<string.h>
#include
<math.h>
int map[100][100],x[100],b[100];
int n,m,max,now;
int dfs(int i)
{
    
int j,flag;
    
if (i>n)
    {
        
for (j=1; j<=n ; j++ )    x[j]=b[j];
        max
=now;
        
return 0;
    }
    flag
=1;
    
for (j=1; j<i ; j++ )
        
if (b[j]&&map[i][j])   //这里如果改为!map[i][j]就是求最大团了。。。。
        {
            flag
=0;
            
break;
        }
    
if (flag)
    {
        b[i]
=1;
        now
++;
        dfs(i
+1);
        now
--;
        b[i]
=0;
    }
    
if (now+n-i>max)
    {
        b[i]
=0;
        dfs(i
+1);
    }
}
int main()
{
    
int i,j,t,x1,x2,flag;
    scanf(
"%d",&t);
    
while (t--)
    {
        scanf(
"%d%d",&n,&m);
        memset(map,
0,sizeof(map));
        
for (i=1; i<=m ; i++ )
        {
            scanf(
"%d%d",&x1,&x2);
            map[x2][x1]
=map[x1][x2]=1;
        }

        max
=0;now=0;
        dfs(
1);
        printf(
"%d\n",max);
        flag
=0;
        
for (i=1; i<=n ; i++ )
            
if (x[i])
            {
                
if (flag)
                    printf(
" ");
                printf(
"%d",i);
                flag
=1;
            }
        printf(
"\n");
    }
    
return 0;
}

posted on 2012-04-02 15:14 wangs 阅读(442) 评论(0)  编辑 收藏 引用 所属分类: ACM-模拟


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理