uva10160(dfs+状态压缩)
题意:给出n个点,以及m条边,这些边代表着这些点相连,修一个电力站,若在某一点修一个站,那么与这个点相连的点都可以通电,问所有的点都通电的话至少要修多少个电力站........ 思路:最多给出的是35个点,那么若是搜索的话,就是2^35......考虑状态压缩剪枝,若某个点修电力站,那么周围的所有点都有电了.... #include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
typedef long long ss;
ss sa[40],t[40],p=1;
int dfs(ss n,ss step,ss ans,ss ks,ss m)
{
if(ans==((p<<n)-1))
{ return 1;
}
//printf("%I64d\n",ans);
if(step==m)
return 0;
if(ks>n)
return 0;
for(int i=ks;i<=n;i++)
{
//printf("%I64d %I64d\n",ans|t[i],((p<<n)-1));
if((ans|t[i])!=((p<<n)-1))
break; if((ans|sa[i])==ans)
continue; if(dfs(n,step+1,ans|sa[i],i+1,m))
return 1;
}
return 0;
}
int main()
{
ss n,q;
//scanf("%I64d",&n);
//scanf("%I64d",&q);
//printf("%I64d %I64d\n",n,q);
//printf("")
while(scanf("%lld",&n)>0)
{
scanf("%lld",&q);
if(n==0&&q==0)
break;
for(ss i=1;i<=n;i++)
{
sa[i]=p<<(i-1);
} for(ss i=1;i<=q;i++)
{
ss tmp,tmp1;
scanf("%lld %lld",&tmp,&tmp1);
sa[tmp]|=(p<<(tmp1-1));
sa[tmp1]|=(p<<(tmp-1));
}
t[n]=sa[n];
for(ss i=n-1;i>0;i--)
{
t[i]=sa[i];
t[i]|=t[i+1];
}
for(ss i=1;i<=n;i++)
{
if(dfs(n,0,0,1,i))
{
printf("%lld\n",i);
break;
}
}
//printf("1111\n");
}
return 0;
}
uva10160(dfs+状态压缩)的更多相关文章
- 2101 可达性统计(拓扑排序/dfs+状态压缩)
[题目描述] 给定一张N个点M条边的有向无环图,分别统计从每个点出发能够到达的点的数量.N,M≤30000. [题目链接] 2101 可达性统计 [算法] 拓扑排序之后逆序计算(感觉dfs更好写而且应 ...
- HDU 4921 Map DFS+状态压缩+乘法计数
算最多十条链,能截取某前缀段,每种方案都可以算出一个权值,每种方案的概率都是总数分之一,问最后能构成的所有可能方案数. 对计数原理不太敏感,知道是DFS先把链求出来,但是想怎么统计方案的时候想了好久, ...
- POJ2743Mobile Computing[DFS 状态压缩]
Mobile Computing Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 666 Accepted: 224 ...
- POJ 1632 Vase collection【状态压缩+搜索】
题目传送门:http://poj.org/problem?id=1632 Vase collection Time Limit: 1000MS Memory Limit: 10000K Total ...
- codeforces B - Preparing Olympiad(dfs或者状态压缩枚举)
B. Preparing Olympiad You have n problems. You have estimated the difficulty of the i-th one as inte ...
- 最大联通子数组之和(dfs,记忆化搜索,状态压缩)
最大联通子数组,这次的题目,我采用的方法为dfs搜索,按照已经取到的数v[][],来进行搜索过程的状态转移,每次对v[][]中标记为1的所有元素依次取其相邻的未被标记为1的元素,将其标记为1,然而,这 ...
- poj 1753 Flip Game(bfs状态压缩 或 dfs枚举)
Description Flip game squares. One side of each piece is white and the other one is black and each p ...
- UVA 1508 - Equipment 状态压缩 枚举子集 dfs
UVA 1508 - Equipment 状态压缩 枚举子集 dfs ACM 题目地址:option=com_onlinejudge&Itemid=8&category=457& ...
- hihocoder 1334 - Word Construction - [hiho一下第170周][状态压缩+DFS]
题目链接:https://hihocoder.com/problemset/problem/1334 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Given N wo ...
随机推荐
- Python之zip
# -*- coding: utf-8 -*- #python 27 #xiaodeng #Python之zip #http://python.jobbole.com/82590/ #1)zip语法格 ...
- 安装ESXI 5.5卡在LSI_MR3.V00解决方案
安装ESXI 5.5卡在LSI_MR3.V00解决方案 方法一 故障现象 此问题无论使用VMware官方镜像还是HP的自定义镜像都会出现一下情况并卡着不动.(此文档普遍存在各种服务器上,包括其它厂商服 ...
- 微信小程序:input输入框和form表单几种传值和取值方式
1.传值:index下标传值.页面navigator传值 1.index下标 实现方式是:data-index="{{index}}"挖坑及e.currentTarget.data ...
- PHP中一些有用的函数
<?php /** * 加密解密 * * @param string $key * @param string $string * @param string $decrypt * @retur ...
- linux常见面试题及答案
1. 在Linux系统中,以文件方式访问设备. 2. Linux内核引导时,从文件/etc/fstab中读取要加载的文件系统. 3. Linux文件系统中每个文件用i字节来标识. 4. 全部磁盘块由四 ...
- SQL语句面试题
一条SQL查询,一个表中按日期的累加数据如表: tmp_pay_amount pay_time amount 2013-11-1 10 2013-11-2 5 2013-11-3 4 2013-11- ...
- Cookies揭秘 [Asp.Net, Javascript]
一,前言 Cookies想必所有人都了解, 但是未必所有人都精通.本文讲解了Cookies的各方面知识, 并且提出来了最佳实践.这是笔者在日常工作中的积累和沉淀. 二,基础知识 1.什么是Cookie ...
- Windows下面安装和配置Solr 4.9(三)支持中文分词器
首先将下载解压后的solr-4.9.0的目录里面F:\tools\开发工具\Lucene\solr-4.9.0\contrib\analysis-extras\lucene-libs找到lucene- ...
- JAVA RMI远程方法调用简单实例[转]
RMI的概念 RMI(Remote Method Invocation)远程方法调用是一种计算机之间利用远程对象互相调用实现双方通讯的一种通讯机制.使用这种机制,某一台计算机上的对象可以调用另外 一台 ...
- List多个字段标识过滤 IIS发布.net core mvc web站点 ASP.NET Core 实战:构建带有版本控制的 API 接口 ASP.NET Core 实战:使用 ASP.NET Core Web API 和 Vue.js 搭建前后端分离项目 Using AutoFac
List多个字段标识过滤 class Program{ public static void Main(string[] args) { List<T> list = new List& ...