问题描述
  给定一个N个点M条边的无向图G(点的编号从1至N),问是否存在一个不超过K个点的集合S,使得G中的每条边都至少有一个点在集合S中。
输入格式
  输入的第一行包含一个整数T,表示数据的组数。
  接下来T组数据中:每组输入的第一行包含三个整数n, m, k,分别表示图的点数,边数,集合点数的最大值。接下来m行,每行2个正整数x,y,表示编号为 x 的节点与编号为 y 的节点间有一条边相连。
输出格式
  对于每组测试数据,若其存在解,则将解输出出来:第一行为一个整数t,表示所选点集的大小;第二行为t个整数,表示所选的点的编号。如果存在多组解,只要输出其中一种方案即可(会有special judge程序对你的输出进行检查)。
  若该组测试数据不包含解,则输出一个数-1(一行)。
样例输入
2
10 8 3
6 4
7 2
7 4
7 6
9 3
9 5
10 6
10 9
10 8 2
6 4
7 2
7 4
7 6
9 3
9 5
10 6
10 9
样例输出
3
6 7 9
-1
数据规模和约定
  对于80%的数据,满足 0<n<=20, m<=200, k<=20。
  所有的数据满足 0<n<=100, m<=5000, k<=20。
思路:这个题目没有想到挺好的方法,就是暴力搜索。但是这个题目的数据量并没有它所说的那么大,所以就过了。如果有好的方法,希望路过的大佬可以指正。
代码如下:

#include<bits/stdc++.h>
#define ll long long
using namespace std;const int maxx=1e2+10;
const int maxm=5e3+10;
struct node{int x,y;
}p[maxx];
int vis[maxx];
int n,m,k;inline void init()
{memset(vis,0,sizeof(vis));
}
inline int dfs(int i,int &ans)
{if(ans>k) return 0;if(i>m){if(ans<=k) return 1;return 0;}if(!vis[p[i].x]&&!vis[p[i].y]){vis[p[i].x]=1;if(dfs(i+1,++ans)) return 1;vis[p[i].x]=0;ans--;vis[p[i].y]=1;if(dfs(i+1,++ans)) return 1;vis[p[i].y]=0;ans--;return 0;}else return dfs(i+1,ans);
}
int main()
{int t;scanf("%d",&t);while(t--){scanf("%d%d%d",&n,&m,&k);init();for(int i=1;i<=m;i++) scanf("%d%d",&p[i].x,&p[i].y);int ans=0;if(!dfs(1,ans)) printf("-1\n");else{printf("%d\n",ans);for(int i=1;i<=n;i++) if(vis[i]) printf("%d ",i);puts("");}}return 0;
}

努力加油a啊,(o)/~

[蓝桥杯]算法提高 vertex cover(dfs)相关推荐

  1. [蓝桥杯][算法提高VIP]夺宝奇兵-递推+记忆化搜索

    题目描述 在一座山上,有很多很多珠宝,它们散落在山底通往山顶的每条道路上,不同道路上的珠宝的数目也各不相同.下图为一张藏宝地图: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 " ...

  2. JAVA 蓝桥杯 算法提高 阮小二买彩票

    JAVA 蓝桥杯 算法提高 阮小二买彩票 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 在同学们的帮助下,阮小二是变的越来越懒了,连算账都不愿意自己亲自动手了,每天的工作就是坐在电 ...

  3. [蓝桥杯][算法提高VIP]夺宝奇兵-dp

    题目描述 在一座山上,有很多很多珠宝,它们散落在山底通往山顶的每条道路上,不同道路上的珠宝的数目也各不相同.下图为一张藏宝地图: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 " ...

  4. [蓝桥杯][算法提高VIP]阮小二买彩票

    [蓝桥杯][算法提高VIP]阮小二买彩票 题目描述 在同学们的帮助下,阮小二是变的越来越懒了, 连算账都不愿意自己亲自动手了,每天的工作就是坐在电脑前看自己的银行账户的钱是否有变多.可是一段时间观察下 ...

  5. 【蓝桥杯算法提高VIP-开灯游戏(两种超易理懂解法:暴力/位操作(切换位))(纯正C语言代码)】

    蓝桥杯算法提高VIP-开灯游戏 题目描述 有9盏灯与9个开关,编号都是1~9. 每个开关能控制若干盏灯,按下一次会改变其控制的灯的状态(亮的变成不亮,不亮变成亮的). 具体如下: 第一个开关控制第二, ...

  6. [蓝桥杯][算法提高] 填充蛋糕

    [蓝桥杯][算法提高] 填充蛋糕 编程计算涂满高为2,半径为r的圆形蛋糕表面,需要多少表面积的奶油(只要涂上表面和侧面) 读入一个数r,输出需要奶油的表面积,结果保留一位小数 样例输入 5.0 样例输 ...

  7. c语言oj题1923偶数之和,问题 1923: [蓝桥杯][算法提高VIP]学霸的迷宫 (BFS)

    题目描述 学霸抢走了大家的作业,班长为了帮同学们找回作业,决定去找学霸决斗.但学霸为了不要别人打扰,住在一个城堡里,城堡外面是一个二维的格子迷宫,要进城堡必须得先通过迷宫.因为班长还有妹子要陪,磨刀不 ...

  8. JAVA 蓝桥杯 算法提高 色盲的民主

    JAVA 蓝桥杯 算法提高 色盲的民主 资源限制 时间限制:1.0s 内存限制:256.0MB  色盲的民主 问题描述 n个色盲聚在一起,讨论一块布的颜色.尽管都是色盲,却盲得各不相同.每个人都有自 ...

  9. [蓝桥杯][算法提高VIP]阮小二买彩票[递归全排列]

    题目 1578: [蓝桥杯][算法提高VIP]阮小二买彩票 时间限制: 1Sec 内存限制: 128MB 提交: 348 解决: 153 题目描述 在同学们的帮助下,阮小二是变的越来越懒了, 连算账都 ...

最新文章

  1. linux shell脚本if,linux的shell脚本中if,for,while的解析与应用
  2. IC Order search 的debugging关键点
  3. ios基础之 ARC
  4. 计算机原码、反码、补码详解
  5. C学习杂记(四)sizeof计算联合体大小
  6. 【2017年第3期】面向共享的政府大数据质量标准化问题研究
  7. jedis开发过程中遇到的问题及其解决方法
  8. window php 安装zip扩展,Windows下安装php_rar 扩展,让php实现rar文件的读取和解压
  9. WPF 禁止在文本框中输入数字
  10. 计算机网络基础代码,计算机网络基础知识(示例代码)
  11. es6html模板,js 字符串模板 ES6
  12. mysql主祝福hi_MySql - GROUP BY 和 HAVING关键字
  13. HP服务器集成 iLO 端口的配置
  14. pandas处理mysql 展现wpf_Pandas DataFrame使用多列聚合函数
  15. matlab 扩大虚拟内存,matlab 扩大虚拟内存
  16. SAP中文件的上传和下载
  17. java来电报名字的软件_教你一招,手机来电话可以语音报出来电人的姓名和电话号码,收藏...
  18. 算法图解——の——二分查找【附带pdf下载链接】
  19. List转Map-JDK8实现
  20. 手机可以连上wifi,电脑连不上怎么办?

热门文章

  1. C++和C#相互调用COM组件的方法简介
  2. python 矩阵元素赋值_对numpy中数组元素的统一赋值实例
  3. 一个列中多行求和_Excel 用选项求和及用快捷键快速求和,同时对多单元格求和...
  4. mysql中删除某一纵的方法_sql数据库:如何在一个表中填加或者删除一个字段!...
  5. 隐藏滚动条或更改滚动条样式加制作三角形
  6. nginx 返回动态Html,Nginx负载均衡 -Nginx动态更新upstream
  7. Java 阿里巴巴数据源_阿里P7教你如何使用 Spring 配置动态数据源实现读写分离
  8. Android开发之自定义view进行旋转动画
  9. Android关于Handler发送消息里面的arg1和arg2以及obj和what的用法
  10. php thumbs.db,window_Win8系统删除thumbs.db文件的方法,  最近有Win8系统用户反映, - phpStudy...