原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=3498

题意:n个怪兽,m对怪兽的关系,表示怪兽a和b之间连线,当把一个怪兽杀死,和其直接相连的怪兽都死,求最少杀多少个可以使所有怪兽死亡。

#define _CRT_SECURE_NO_DEPRECATE #include<iostream>
#include<vector>
#include<cstring>
#include<queue>
#include<stack>
#include<algorithm>
#include<cmath>
#define INF 99999999
#define eps 0.0001
using namespace std;const int MAXC = 55 + 10;
const int MAXR = 55 + 10;
const int MAXN = MAXC*MAXR + 100;int n, m;
int cnt;
int ans;
int p[60][60];
int vis[60];
int U[MAXN], D[MAXN], L[MAXN], R[MAXN];
int C[MAXN];int H[MAXR];
int S[MAXC];void init(int n)
{for (int i = 0; i <= n; i++){U[i] = D[i] = i;L[i] = i - 1;R[i] = i + 1;S[i] = 0;}L[0] = n;R[n] = 0;cnt = n + 1;memset(H, 0, sizeof(H));
}void link(int r, int c)
{S[c]++;C[cnt] = c;U[cnt] = U[c];D[U[c]] = cnt;D[cnt] = c;U[c] = cnt;if (H[r] == 0)H[r] = L[cnt] = R[cnt] = cnt;else{L[cnt] = L[H[r]];R[L[H[r]]] = cnt;R[cnt] = H[r];L[H[r]] = cnt;}cnt++;
}void remove(int cnt_)
{for (int i = D[cnt_]; i != cnt_; i = D[i]){L[R[i]] = L[i];R[L[i]] = R[i];}
}void resume(int cnt_)
{for (int i = D[cnt_]; i != cnt_; i = D[i])L[R[i]] = R[L[i]] = i;
}int e()
{int num = 0;memset(vis, 0, sizeof(vis));for (int i = R[0]; i != 0; i = R[i]){if (!vis[i]){num++;for (int j = D[i]; j != i; j = D[j])for (int k = R[j]; k != j; k = R[k])vis[C[k]] = 1;}}return num;
}void dance(int k)
{if (k + e() >= ans)return;if (R[0] == 0){if (k < ans)ans = k;return;}int c;int minn = INF;for (int i = R[0]; i != 0; i = R[i]){if (minn > S[i]){minn = S[i];c = i;}}for (int i = D[c]; i != c; i = D[i]){remove(i);for (int j = R[i]; j != i; j = R[j])remove(j);dance(k + 1);for (int j = R[i]; j != i; j = R[j])resume(j);resume(i);}
}int main()
{int a, b;while (~scanf("%d%d", &n, &m)){memset(p, 0, sizeof(p));init(n);while (m--){scanf("%d%d", &a, &b);p[a][b] = p[b][a] = 1;}for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++)if (p[i][j] || i == j)link(i, j);ans = 100;dance(0);printf("%d\n", ans);}return 0;
}

hdu3498 whosyourdaddy--可重复覆盖舞蹈链相关推荐

  1. HDU 3498 whosyourdaddy (可重复覆盖舞蹈链)

    题意: 给出N个点,M个边构成图.每选取一个点都可以覆盖其相邻点,问要覆盖所有点最少选几个点 思路: 每个点都作为一个点集,进行爆搜覆盖,舞蹈链模板题. 代码: #include <bits/s ...

  2. hdu - 3498 - whosyourdaddy(重复覆盖DLX)

    题意:N(2 ≤ N ≤ 55)个点,M(0 ≤ M ≤ N*N)条无向边,删除一个点会把与其相邻的点一起删掉,问最少删几次可以删掉所有点. 题目链接:http://acm.hdu.edu.cn/sh ...

  3. HDU 3498 whosyourdaddy DLX重复覆盖

    题目: http://acm.hdu.edu.cn/showproblem.php?pid=3498 题意: 有 n n个敌人,其中有mm对敌人互为邻居,当你攻击杀死一个敌人时,同时会杀死它所有的邻居 ...

  4. HDU 3498 whosyourdaddy(DLX重复覆盖)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3498         n个点,m条无向边,删除一个点会把与其相邻的点一起删掉,问最少删几次可以删掉所有 ...

  5. dancing links(舞蹈链)——求解精准覆盖及重复覆盖问题

    以下转自:https://blog.csdn.net/the_star_is_at/article/details/53425736 问题描述: 给定一个n*m的矩阵,有些位置为1,有些位置为0.如果 ...

  6. HDU 4735 舞蹈链可重复覆盖

    点击打开链接 题意:给一个树和边权,然后树上的每个节点都有一个男孩或女孩,若有一个男孩的位置与一个女孩的位置的距离小于等于D,则这个女孩安全,现在可以换任意两个节点的人,问最少换多少次所有女孩都安全 ...

  7. FZU 1686 神龙的难题(重复覆盖问题舞蹈链)

    题目链接:[kuangbin带你飞]专题三 Dancing Links D - 神龙的难题 题意 Description 这是个剑与魔法的世界.英雄和魔物同在,动荡和安定并存.但总的来说,库尔特王国是 ...

  8. 算法帖——用舞蹈链算法(Dancing Links)求解俄罗斯方块覆盖问题

    问题的提出:如下图,用13块俄罗斯方块覆盖8*8的正方形.如何用计算机求解? 解决这类问题的方法不一而足,然而核心思想都是穷举法,不同的方法仅仅是对穷举法进行了优化 用13块不同形状的俄罗斯方块(每个 ...

  9. DLX (Dancing Links/舞蹈链)算法——求解精确覆盖问题

    精确覆盖问题的定义:给定一个由0-1组成的矩阵,是否能找到一个行的集合,使得集合中每一列都恰好包含一个1 例如:如下的矩阵 就包含了这样一个集合(第1.4.5行) 如何利用给定的矩阵求出相应的行的集合 ...

最新文章

  1. java中的数组_Java中的数组
  2. 神经网络与机器学习 笔记—多层感知器(MLP)
  3. [转]虚拟机网络模式简介
  4. 何为TransmittableThreadLocal
  5. java 构建者模式_Java方法中的参数太多,第3部分:构建器模式
  6. 【Java深入研究】10、红黑树
  7. Golang——指针的使用、数组指针和指针数组、指针与切片、指针与结构体、多级指针
  8. C#数据结构-顺序表
  9. python django mysql web页面多级联动_Python Web实战:Python+Django+MySQL实现基于Web版的增删改查...
  10. php转换编码去掉bom,UTF-8编码怎么去掉BOM头?
  11. Flink 1.11 SQL 使用攻略
  12. [笔记分享] [GPIO] MSM8x39 GPIO 软件部分小结
  13. Spring源码解析一 (IOC容器初始化深度解析)
  14. 国外问卷调查回答问题有什么技巧?
  15. php 九宫格验证码,PHP+Ajax微信手机端九宫格抽奖实例
  16. STM32学习心得十九:电容触摸按键实验及相关代码解读
  17. UPC 小澳的葫芦 (最短路+01分数规划 )
  18. 软考有什么用?最全软考详解
  19. 带你快速看完9.8分神作《Effective Java》—— 序列化篇(所有RPC框架的基石)
  20. java计算机毕业设计网上扶贫农产品销售系统源码+系统+数据库+lw文档+mybatis+运行部署

热门文章

  1. 三菱PLC如FX3U如何转换Modbus
  2. windows 服务程序学习心得
  3. MATLAB 遗传算法 路径优化
  4. ai皮肤检测分数_AI皮肤检测App开发提供更好的护肤
  5. FileReader简介
  6. mmall 学习笔记--分类管理模块,商品管理模块,购物车模块,收货地址模块,支付模块,订单管理模块,云服务器线上部署,自动发布,
  7. 负数short转Integer
  8. java调用jasperreport_Java代码导出Jasperreport
  9. 胜为蓝牙328linux,mac 安装usb 蓝牙适配器 胜为 shengwei UDC-324B
  10. .9.png一些总结