题目链接:http://poj.org/problem?id=1419

题目大意:一个无向图,用黑白涂色,相邻的两个点不能图同一种颜色,求黑色的点最多有几个?

刚一看题,完全是图的m着色问题啊,我就套模板,好吧,搞了半天没出来,看了一下别人的博客,原来还是有不同的地方,求最大团。

这里DFS回溯时,加上剪枝。

#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std; const int NN=; int n,ans,cnt,x[NN],opt[NN];
bool map[NN][NN]; void dfs(int i)
{
if (i>n)
{
ans=cnt;
for (int i=; i<=n; i++) opt[i]=x[i];
return;
}
bool flag=true;
for (int j=; j<i && flag; j++)
if (x[j]== && !map[j][i]) flag=false;
if (flag)
{
x[i]=;
cnt++;
dfs(i+);
cnt--;
}
if (cnt+n-i>ans)///可行性剪枝
{
x[i]=;
dfs(i+);
}
} int main()
{
int cas,m,x,y;
scanf("%d",&cas);
while (cas--)
{
scanf("%d%d",&n,&m);
memset(map,,sizeof(map));
for (int i=; i<=m; i++)
{
scanf("%d%d",&x,&y);
map[x][y]=map[y][x]=;
}
ans=cnt=;
dfs(); ///求最大团 printf("%d\n",ans);
for (int i=; i<=n; i++)
if (opt[i]) printf("%d ",i);
printf("\n");
}
return ;
}

DFS剪枝,最大团,POJ(1419)的更多相关文章

  1. DFS(剪枝) POJ 1011 Sticks

    题目传送门 /* 题意:若干小木棍,是由多条相同长度的长木棍分割而成,问最小的原来长木棍的长度: DFS剪枝:剪枝搜索的好题!TLE好几次,终于剪枝完全! 剪枝主要在4和5:4 相同长度的木棍不再搜索 ...

  2. POJ 1419 Graph Coloring(最大独立集/补图的最大团)

    Graph Coloring Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 4893   Accepted: 2271   ...

  3. poj 1011 Sticks (DFS+剪枝)

    Sticks Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 127771   Accepted: 29926 Descrip ...

  4. poj 1564 Sum It Up | zoj 1711 | hdu 1548 (dfs + 剪枝 or 判重)

    Sum It Up Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Sub ...

  5. POJ 3009 DFS+剪枝

    POJ3009 DFS+剪枝 原题: Curling 2.0 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16280 Acce ...

  6. poj 1724:ROADS(DFS + 剪枝)

    ROADS Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10777   Accepted: 3961 Descriptio ...

  7. poj 1011 :Sticks (dfs+剪枝)

    题意:给出n根小棒的长度stick[i],已知这n根小棒原本由若干根长度相同的长木棒(原棒)分解而来.求出原棒的最小可能长度. 思路:dfs+剪枝.蛮经典的题目,重点在于dfs剪枝的设计.先说先具体的 ...

  8. POJ2688状态压缩(可以+DFS剪枝)

    题意:       给你一个n*m的格子,然后给你一个起点,让你遍历所有的垃圾,就是终点不唯一,问你最小路径是多少? 思路:       水题,方法比较多,最省事的就是直接就一个BFS状态压缩暴搜就行 ...

  9. *HDU1455 DFS剪枝

    Sticks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

随机推荐

  1. etcd介绍

    etcd是一个开源的.分布式的键值对数据存储系统,提供共享配置.服务的注册和发现. etcd与zookeeper相比算是轻量级系统.etcd的raft比zookeeper的paxos简单. 我们用et ...

  2. VS2015+NUnit+OpenCover 完成单元测试代码覆盖率测试

    1.VS2015+NUnit+OpenCover 完成单元测试代码覆盖率测试 https://download.csdn.net/download/qq_39441918/10522539 2.*注意 ...

  3. Java学习笔记day04_数组

    1.switch case switch语句中表达式的数据类型是有要求的: JDK 1.0 ~ 1.4 , 数据类型接受byte, short, int, char JDK 1.5 , 数据类型接受b ...

  4. Vue 中怎么发起请求(一)

    1.vue 支持开发者引入 jquery 使用 $.ajax() 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1.首先,在 package.json 中添加 j ...

  5. 二分搜索 - Binary Search

    二分搜索是一种在有序数组中寻找目标值的经典方法,也就是说使用前提是『有序数组』.非常简单的题中『有序』特征非常明显,但更多时候可能需要我们自己去构造『有序数组』.下面我们从最基本的二分搜索开始逐步深入 ...

  6. [转]使用Node.js完成的第一个项目的实践总结

    本文转自:http://blog.csdn.net/yanghua_kobe/article/details/17199417 https://github.com/yanghua/FixedAsse ...

  7. MySQL查询上个月数据

    SELECT * FROM order o WHERE o.payTime BETWEEN DATE_FORMAT(DATE_ADD(NOW(),INTERVAL MONTH),'%Y-%m-01') ...

  8. dom父节点

  9. vue学习第一天 ------ 临时笔记

    学习链接 Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(一)基础知识概述 http://blog.csdn.net/fungleo/article/detai ...

  10. tp3.2水印上传文件

    <html> <html lang="en"><head>    <meta charset="UTF-8">  ...