UVA 818 Cutting Chains 切断圆环链 (暴力dfs)
题意就是给一张无向图,去掉某些结点,然后连成一条链,问最少去掉几个结点。
n很小n<=15,所以直接枚举2^15个状态就行啦。
链的条件是1.无环,2.没有度大于2的点,3.把n个散链连起来需要n-1次拼接,去掉的结点数>=n-1。
#include<bits/stdc++.h>
using namespace std;
const int maxn = ; int G[maxn][maxn];
int n; int c[maxn]; bool dfs(int u,int s,int fa)
{
c[u] = ;
for(int v = ; v < n; v++) if(!((s>>v)&) && G[u][v] && v != fa) {
if(c[v] || dfs(v,s,u)) return true;
}
return false;
}
int cn; bool have_circle(int s)
{
memset(c,,sizeof(c));
for(int i = ;i < n; i++)
if(!((s>>i)&) && !c[i] ){
cn++;
if(dfs(i,s,-)) return true;
} return false;
} bool two(int s)
{
for(int i = ; i < n; i++) if(!((s>>i)&)) {
int deg = ;
for(int j = ; j < n; j++) if(!((s>>j)&) && G[i][j]) {
deg++;
}
if(deg>) return true;
}
return false;
} int cal(int s,int &t){
t = ;
while(s){
if(s&) t++;
s>>=;
}
return t;
} int main()
{
//freopen("in.txt","r",stdin);
int cas = ;
while(~scanf("%d",&n)&&n){
int u,v;
memset(G,,sizeof(G));
while(~scanf("%d%d",&u,&v)&~u){
G[u-][v-] = G[v-][u-] = ;
}
int ans = ;
for(int s = ,sz = <<n; s < sz; s++){
cn = ;
if(!two(s) && !have_circle(s)){
int t;
if(cn- <= cal(s,t))
ans = min(ans,t);
}
}
printf("Set %d: Minimum links to open is %d\n", ++cas, ans);
}
return ;
}
UVA 818 Cutting Chains 切断圆环链 (暴力dfs)的更多相关文章
- UVA - 818 Cutting Chains(切断圆环链)(dfs + 二进制法枚举子集)
题意:有n个圆环(n<=15),已知已经扣在一起的圆环,现在需要打开尽量少的圆环,使所有圆环可以组成一条链. 分析:因为不知道要打开哪个环,如果列举所有的可能性,即枚举打开环的所有子集,最多才2 ...
- UVA 818 Cutting Chains(状压 + 暴搜)题解
题意:有1~n个小环,他们中的有些互相扣在一起,问你至少切开几个能把这写小环串成一条链 思路:还是太菜了,题目给的n<=15,显然可以暴力解决. 用二进制表示每个环切还是不切,然后搜索所有情况. ...
- UVA 818 Cutting Chains
https://vjudge.net/problem/UVA-818 题意: 有n个圆环,其中有一些已经扣在了一起.现在需要打开尽量少的圆环,使得所有圆环可以组成一条链 n<=15 因为n< ...
- UVa 818 切断圆环链(dfs+二进制枚举)
https://vjudge.net/problem/UVA-818 题意:有n个圆环,其中有一些已经扣在了一起.现在需要打开尽量少的圆环,使得所有圆环可以组成一条链,例如,有5个圆环,1-2,2-3 ...
- uva 818 (位运算 + 判环)
Cutting Chains What a find! Anna Locke has just bought several links of chain some of which may be ...
- hihoCoder 1185 连通性·三(Tarjan缩点+暴力DFS)
#1185 : 连通性·三 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 暑假到了!!小Hi和小Ho为了体验生活,来到了住在大草原的约翰家.今天一大早,约翰因为有事要出 ...
- Strange Country II 暴力dfs
这题点的个数(<=50)有限, 所以可以纯暴力DFS去搜索 //#pragma comment(linker, "/STACK:16777216") //for c++ Co ...
- UVA 1508 - Equipment 状态压缩 枚举子集 dfs
UVA 1508 - Equipment 状态压缩 枚举子集 dfs ACM 题目地址:option=com_onlinejudge&Itemid=8&category=457& ...
- UVA129 暴力dfs,有许多值得学习的代码
紫书195 题目大意:给一个困难的串,困难的串的定义就是里面没有重复的串. 思路:不需要重新对之前的串进行判重,只需要对当前的加入的字符进行改变即可. 因为是判断字典序第k个的字符串,所以要多一个全局 ...
随机推荐
- 通过xpath获取对应的整个子节点信息
1.页面解析接口 package com.dajiangtai.djt_spider.service; import com.dajiangtai.djt_spider.entity.Page; /* ...
- 将Opencv java中的Mat通过jni传递到C++中的方法
public native void FindFeatures(long matAddrGr, long matAddrRgba); ... mRgba = new Mat(height, width ...
- CodeForces - 828C String Reconstruction 并查集(next跳)
String Reconstruction Ivan had string s consisting of small English letters. However, his friend Jul ...
- 存储过程为参数NULL时的处理方法
准备一些数据: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Goods]( ) NULL, ) NULL, ...
- 3dmax视频
http://wenku.baidu.com/course/list/514?tagID=177
- cogs1583. [POJ3237]树的维护
1583. [POJ3237]树的维护 http://www.cogs.pro/cogs/problem/problem.php?pid=1583 ★★★☆ 输入文件:maintaintree.i ...
- P5346 【XR-1】柯南家族
题目地址:P5346 [XR-1]柯南家族 Q:官方题解会咕么? A:不会!(大雾 题解环节 首先,我们假设已经求出了 \(n\) 个人聪明程度的排名. \(op = 1\) 是可以 \(O(1)\) ...
- 进击JavaScript核心 --- (1)基本数据类型
ES5之前提供了 5种基本数据类型 和 1种引用数据类型 基本数据类型:Undefined, Null, String, Number, Boolean 引用数据类型:Object ES6开始引入了一 ...
- Windows右下角图标显示不正常
我的win7系统,右下角图标透明,分不清哪个是哪个.点击也没有任何反应. 解决办法: 点击运行输入cmd,在命令提示符下输入下列命令即可恢复. taskkill /im explorer.exe /f ...
- QDU-GZS与素数大法(素数筛法)
Description 自从GZS成为G神之后,追随者不计其数,更是有了大名鼎鼎的拜神论: "吾尝终日编程也,不如须臾之拜拜G神也:吾尝打字刷题也,不如一日三拜G神也: 拜拜G神,程序非长也 ...