题目大意:一种环能打开和闭合。现在有n(1<=n<=15)个编号为1~n的环错综复杂的连接着,要打开一些环重新连接使这n个环能构成一条链,问最少需要打开几次环可达到目的?

题目分析:用二进制数表示要打开的环的集合,总共2^n种情形,枚举每一种情况。当把将要打开的环打开后,此环是孤立的,接下来就要判断剩下的环还与几个环连着,如果有的环仍然与两个以上的环连着则该方案不可行,不可能构成链;然后判断剩下的环有没有连成一个圈,如果有,则该方案不可行;最后,判断完前两个条件之后,所有的环都一定处于某条短链(长度小于等于n)中,只需判断一下短链的条数是否小于等于打开的环数加1,若不成立,则一定连不成一条链,若成立,则该方案可行。

代码如下:

# include<iostream>
# include<cstdio>
# include<set>
# include<cstring>
# include<algorithm>
using namespace std; int n,ans,st[15],s[15],vis[15]; int bitCount(int sta)
{
return sta==0?0:bitCount(sta>>1)+(sta&1);
} void dfs(int u,int pre)
{
for(int i=0;i<n;++i){
if(i!=pre&&s[u]&(1<<i)){
++vis[i];
if(vis[i]<2)
dfs(i,u);
}
}
} bool ok(int sta)
{
for(int i=0;i<n;++i)
s[i]=st[i]; ///打开环
for(int i=0;i<n;++i){
if(sta&(1<<i)){
s[i]=0;
for(int j=0;j<n;++j){
if(j!=i&&s[j]&(1<<i))
s[j]^=(1<<i);
}
}
} ///判度
for(int i=0;i<n;++i)
if(!(sta&(1<<i))&&bitCount(s[i])>2)
return false; ///判圈
int link=0;
memset(vis,0,sizeof(vis));
for(int i=0;i<n;++i){
if(!vis[i]&&!(sta&(1<<i))){
++link;
++vis[i];
dfs(i,-1);
}
}
for(int i=0;i<n;++i)
if(vis[i]>=2)
return false; ///判链
if(link-1>bitCount(sta))
return false; return true;
} int main()
{
int a,b,cas=0;
while(scanf("%d",&n)&&n)
{
memset(st,0,sizeof(st));
while(scanf("%d%d",&a,&b))
{
if(a==-1&&b==-1)
break;
st[a-1]|=(1<<(b-1));
st[b-1]|=(1<<(a-1));
} ans=n;
int tot=1<<n;
for(int i=0;i<tot;++i)
if(ok(i))
ans=min(ans,bitCount(i)); printf("Set %d: Minimum links to open is %d\n",++cas,ans);
}
return 0;
}

  

UVA-818 Cutting Chains (位压缩+暴力搜索)的更多相关文章

  1. UVA 818 Cutting Chains 切断圆环链 (暴力dfs)

    题意就是给一张无向图,去掉某些结点,然后连成一条链,问最少去掉几个结点. n很小n<=15,所以直接枚举2^15个状态就行啦. 链的条件是1.无环,2.没有度大于2的点,3.把n个散链连起来需要 ...

  2. UVA 818 Cutting Chains(状压 + 暴搜)题解

    题意:有1~n个小环,他们中的有些互相扣在一起,问你至少切开几个能把这写小环串成一条链 思路:还是太菜了,题目给的n<=15,显然可以暴力解决. 用二进制表示每个环切还是不切,然后搜索所有情况. ...

  3. UVA 818 Cutting Chains

    https://vjudge.net/problem/UVA-818 题意: 有n个圆环,其中有一些已经扣在了一起.现在需要打开尽量少的圆环,使得所有圆环可以组成一条链 n<=15 因为n< ...

  4. UVA - 818 Cutting Chains(切断圆环链)(dfs + 二进制法枚举子集)

    题意:有n个圆环(n<=15),已知已经扣在一起的圆环,现在需要打开尽量少的圆环,使所有圆环可以组成一条链. 分析:因为不知道要打开哪个环,如果列举所有的可能性,即枚举打开环的所有子集,最多才2 ...

  5. UVA 529 - Addition Chains,迭代加深搜索+剪枝

    Description An addition chain for n is an integer sequence  with the following four properties: a0 = ...

  6. UVA 10003 Cutting Sticks 区间DP+记忆化搜索

    UVA 10003 Cutting Sticks+区间DP 纵有疾风起 题目大意 有一个长为L的木棍,木棍中间有n个切点.每次切割的费用为当前木棍的长度.求切割木棍的最小费用 输入输出 第一行是木棍的 ...

  7. uva 818 (位运算 + 判环)

     Cutting Chains  What a find! Anna Locke has just bought several links of chain some of which may be ...

  8. POJ 1753. Flip Game 枚举or爆搜+位压缩,或者高斯消元法

    Flip Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 37427   Accepted: 16288 Descr ...

  9. ACM 暴力搜索题 题目整理

    UVa 129 Krypton Factor 注意输出格式,比较坑爹. 每次要进行处理去掉容易的串,统计困难串的个数. #include<iostream> #include<vec ...

随机推荐

  1. Maven的scope的值

    Maven的依赖范围 在pom.xml文件中,有个元素是scope,用来表示依赖的范围.之所以会有依赖范围,是因为Maven在编译.测试和运行项目时会各自使用一套classpath,依赖范围就是用来控 ...

  2. (mac)阿里云ECS服务器配置过程

    -----首先本人是半只脚入门的iOS开发者,弄这个只是单纯想多学点东西. -----阿里云服务器的配置选择:既然是学习用的,最最基础的配置就行了.1M带宽,1核1G...这就不详述了.没啥可选的,( ...

  3. WindowsServer-性能计数器

    https://jingyan.baidu.com/article/59703552e764e48fc00740dd.html

  4. Kali连接不上ssh

    1.修改sshd_config文件 vim /etc/ssh/sshd_config 将#PasswordAuthentication yes的注释去掉 将#PermitRootLogin prohi ...

  5. Eclipse启动Tomcat时,45秒超时解决方式

    Eclipse启动Tomcat时,45秒超时解决方式 在Eclipse中启动Tomcat服务器时,经常由于系统初始化项目多,导致出现45秒超时的Tomcat服务器启动错误.  一般通过找到XML配置文 ...

  6. phonegap 开发案例

    PhoneGap-Android-HTML5-WebSocket 不使用任何框架,教你制作网页滑动切换效果 http://www.csdn.net/article/2012-04-17/2804644 ...

  7. 01: JavaScript实例

    1.1 基础 JavaScript 实例 <body> <script type="text/javascript"> document.write(&qu ...

  8. 20145216史婧瑶《网络对抗》Web安全基础实践

    20145216史婧瑶<网络对抗>Web安全基础实践 实验问题回答 (1)SQL注入攻击原理,如何防御 攻击原理: SQL注入攻击指的是通过构建特殊的输入作为参数传入web应用程序,而这些 ...

  9. 20145329 《网络对抗技术》MSF基础应用

    实践目标 掌握metasploit的基本应用方式,掌握常用的三种攻击方式的思路.具体需要完成(1)一个主动攻击,如ms08_067;(2)一个针对浏览器的攻击,如ms11_050:(3)一个针对客户端 ...

  10. CSS3实现小黄人动画

    转载请注明出处,谢谢! 每次看到CSS3动画就心痒痒想试一下,记得一个多月前看了白树哥哥的一篇博客,突然开窍,于是拿他提供的demo试了一下,感觉很棒!下图为demo提供的动画帧设计稿. 自己也想说搞 ...