【习题 7-4 UVA-818】Cutting Chains
2024-10-01 19:10:15
【链接】 我是链接,点我呀:)
【题意】
在这里输入题意
【题解】
二进制枚举要解开哪些环。
把所有和它相关的边都删掉。
对于剩下的联通分量。
看看是不是每一个联通分量都是一条链
->每个点的度数都不大于2
->不是环。
同时剩余的联通分量的个数x
解开的环的个数y
y>=x-1才行
满足以上条件即可
【代码】
#include <bits/stdc++.h>
using namespace std;
const int N = 20;
int n;
int g[N][N];
bool vis[N];
bool dfs(int x,int pre){
vis[x]=1;
int count = 0;
for (int i = 1;i <= n;i++)
if (g[x][i]>0 && i!=pre && !vis[i]){
count++;
if (count>2) return false;
if (!dfs(i,x)) return false;
}else {
if (i==pre) count++;
if (count>2) return false;
if (g[x][i]>0 && i!=pre && vis[i]) return false;
}
return true;
}
int main(){
#ifdef LOCAL_DEFINE
freopen("rush_in.txt", "r", stdin);
#endif
ios::sync_with_stdio(0),cin.tie(0);
int kase = 0;
while (cin >>n && n){
memset(g,255,sizeof g);
int x,y;
while (cin >> x >> y && !(x==-1 && y==-1)){
g[x][y] = 1;g[y][x] = 1;
}
int ma = 1<<n;
int ans = n;
for (int i = 0;i < ma;i++){
int out = 0;
memset(vis,0,sizeof vis);
for (int j = 0;j <n;j++){
if ((1<<j)&i){
out++;
vis[j+1] = 1;
for (int k = 1;k <= n;k++)
if (g[j+1][k]==1)
g[j+1][k] = g[k][j+1] = 0;
}
}
int lian = 0;
bool ok = true;
for (int i = 1;i <= n;i++)
if (!vis[i]){
ok = ok&dfs(i,-1);
if (!ok) break;
lian++;
}
if (ok && lian-1<=out){
ans = min(ans,out);
}
for (int j = 0;j <n;j++)
if ((1<<j)&i)
for (int k = 1;k <= n;k++)
if (g[j+1][k]==0)
g[j+1][k] = g[k][j+1] = 1;
}
cout << "Set "<<++kase<<": Minimum links to open is "<<ans << endl;
}
return 0;
}
最新文章
- vs运行时候冒了这个错:无法启动IIS Express Web 服务器~Win10
- 关于C#中readonly的一点小研究
- 自己封装一个Log模块
- [转]vb socket通信(TCP/UDP)一对一、多对一
- (转)HBase 的原理和设计
- 视频播放器开发中遇到的一些小问题MPMoviePlayerController
- 语音分享应用ios源码
- UVa 297 (四分树 递归) Quadtrees
- [JavaScript] js 复制到剪切板
- C# Dispose Finalize
- SQLServer 工具技巧
- 设计模式(十五):Iterator迭代器模式 -- 行为型模式
- Natas Wargame Level27 Writeup(SQL表的注入/溢出与截取)
- 数据库中row_number()、rank()、dense_rank() 的区别
- 【读书笔记】iOS-iOS敏捷开发
- nodejs 修改端口号 process.env.PORT(window环境下)
- easyUi DataGrid 显示日期列,时间为空也可,的正常显示,及普通居中列情况
- finger-guessing game:1场景搭建
- 第三百六十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索的自动补全功能
- aarch64_a1
热门文章
- vue.2.0-路由
- 25.内置API
- 如何保证对象线程内唯一:数据槽(CallContext)
- BZOJ 4144 Dijkstra+Kruskal+倍增LCA
- tomcat安装部署
- input[type=date]
- android+myeclipse+mysql自定义控件下拉框的数据绑定
- IDEA 开发工具在POM.XML文件中增加依赖
- LeetCode Implement strStr()(Sunday算法)
- 31.Intellij idea 的maven项目如何通过maven自动下载jar包