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 ...
随机推荐
- 〖Linux〗clang3.4的编译与安装
1. 编译与安装clang3.4 sudo apt-get install -y g++ subversion cmake cd ~ mkdir Clang && cd Clang s ...
- HTTP协议详解之响应篇
#xiaodeng #状态码 #HTTP权威指南 62 #http响应由3部分组成:状态行.消息报头.响应正文.HTTP-Version Status-Code Reason-Phrase CRLF# ...
- 每天写点shell脚本 (持续更新)
1.显示系统信息脚本 #!/bin/bash #A system information gathering script #Command UNAME="uname -a" pr ...
- JDBC实例--JDBC连接池技术解密,连接池对我们不再陌生
一.为什么我们要用连接池技术? 前面的数据库连接的建立及关闭资源的方法有些缺陷.统舱传统数据库访问方式:一次数据库访问对应一个物理连接,每次操作数据库都要打开.关闭该物理连接, 系统性能严重受损. 解 ...
- Tomcat訪问日志浅析
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" ...
- Linux命令行上执行操作,不退回命令行的解决方法
问题描述: 如果你现在登录Centos执行了某个操作,但是操作一直占用命令行,命令行显示的也都是这个命令相关的操作,我想做其它事情 ,该怎么办呢 ? 解决方法: 根据<Linux命令行与Shel ...
- Android——Intent动作汇总(转)
String ADD_SHORTCUT_ACTION 动作:在系统中添加一个快捷方式.. "android.intent.action.ADD_SHORTCUT" String A ...
- Qt WebView改造成 QML App
这是去年的一个项目,虽然研究出来了,解了一时之需,但随后束之高阁.当时Qt的版本是4.8.现在整理如下: 把QT HTML5 APP改造成 QML App 方案 新建一个QML自定义控件,该控件包含Q ...
- regular expression 练习
练习有一个文件,文件名为output_1981.10.21.txt .下面使用Python: 读取文件名中的日期时间信息,并找出这一天是周几.将文件改名为output_YYYY-MM-DD-W.txt ...
- Accelerated C++学习笔记7—<使用库算法>
第6章 使用库算法 本章中主要教我们怎样使用几个库算法来解决与处理字符串和学生成绩相关的问题. 1.分析字符串 使用一个循环来连接两幅字符图案 <span style="font-f ...