部落卫队
【问题描述】
       原始部落byteland中的居民们为了争夺有限的资源,经常发生冲突。几乎每个居民都有他的仇敌。部落酋长为了组织一支保卫部落的队伍,希望从部落的居民中选出最多的居民入伍,并保证队伍中任何2 个人都不是仇敌。
【编程任务】
        给定byteland部落中居民间的仇敌关系,编程计算组成部落卫队的最佳方案。
【输入格式】
第1行有2个正整数n和m,表示byteland部落中有n个居民,居民间有m个仇敌关系。居民编号为1,2,…,n。接下来的m行中,每行有2个正整数u和v,表示居民u与居民v是仇敌。
【输出格式】
第1行是部落卫队的顶人数;文件的第2行是卫队组成x i,1≤i≤n,xi =0 表示居民i不在卫队中,xi=1表示居民i在卫队中。
【输入样例】
7  10
1  2
1  4
2  4
2  3
2  5
2  6
3  5
3  6
4  5
5  6
【输出样例】
3
1 0 1 0 0 0 1
【解题思路】
再次感谢fye的帮助!!!!!(有学姐就是好\(^o^)/~)
仇敌的关系存一下;
f[i]表示编号为i的这个人是不是部落卫队的仇敌,,如果是的话就不能选;
因为一个人也许是很多个人的仇敌,所以f[i]设置成一个计数器,是一个人的仇敌就+1;
搜索过程中要剪枝;
【代码】
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m,i,ans,maxn,x,y;
int a[100][100],b[100],d[100],f[100];void dfs(int dep)
{int r;if (dep==n+1){if (maxn>ans)//这里不难理解{ans=maxn;for (i=1;i<=n;++i)d[i]=b[i];}return;}if (maxn+n-dep+1<ans) return;//最优化剪枝,如果当前选好的人加上还没有搜索到的人还小于当前已知的最大值的话,if (!f[dep])                 //就直接退出,不用继续搜索了 {b[dep]=1;maxn++;for (r=1;r<=n;++r)//选了一个人,那就把他所有的仇人的f[i]+1if (a[dep][r]==1)f[r]++;//巧妙之处!!!dfs(dep+1);for (r=1;r<=n;++r)//回溯一步if (a[dep][r]==1)f[r]--;maxn--;}b[dep]=0;//这是当前的人不选的情况,直接搜索下一层dfs(dep+1);//dep是按人搜索
}int main()
{<span style="font-family: Arial, Helvetica, sans-serif;"> </span>
scanf("%d%d",&n,&m);for (i=1;i<=m;++i){scanf("%d%d",&x,&y);a[x][y]=1;//存储仇敌关系a[y][x]=1;}dfs(1);printf("%d\n",ans);for (i=1;i<=n;++i)printf("%d ",d[i]);return 0;
}

部落卫队 解题报告相关推荐

  1. 5-3 部落卫队问题 (25 分)

    原始部落byteland中的居民们为了争抢有限的资源,经常发生冲突.几乎每个居民都有它的仇敌.部落酋长为了组织一支保卫部落的队伍,希望从部落的居民中选出最多的居民入伍,并保证队伍中任何两个人都不是仇敌 ...

  2. uscao 线段树成段更新操作及Lazy思想(POJ3468解题报告)

    线段树成段更新操作及Lazy思想(POJ3468解题报告) 标签: treequerybuildn2cstruct 2011-11-03 20:37 5756人阅读 评论(0) 收藏 举报  分类: ...

  3. 解题报告(十八)数论题目泛做(Codeforces 难度:2000 ~ 3000 + )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  4. 【解题报告系列】超高质量题单 + 题解(ACM / OI)超高质量题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我新写的超高质量的题解和代码,题目难度不 ...

  5. 解题报告(三)多项式求值与插值(拉格朗日插值)(ACM / OI)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  6. 解题报告(十三)中国剩余定理(ACM / OI)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  7. 解题报告(四)生成函数(ACM/ OI)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  8. 解题报告(八) prufer 序列与 Cayley 公式(ACM / OI)超高质量题解

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

  9. 解题报告(一)E、(BZOJ4589)Hard Nim(博弈论 + FWT)

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

最新文章

  1. academic division at cssa
  2. java mysql 线程安全_java连接mysql的线程安全问题
  3. Linux调度系统全景指南(中篇)
  4. 关于在asp.net中textbox文本输入框中的汉语标点符号显示位置的问题
  5. java商品管理系统_【Java Web】简易商品信息管理系统——首个Web项目
  6. mysql的root用户无法给普通用户授权问题处理
  7. 数据结构------递归+迷宫问题+最短路径问题解决思路
  8. flutter系列之将已存在的原生应用转化为混编应用
  9. 论坛php 图片上传,图片上传、分享网站
  10. CS269I:Incentives in Computer Science 学习笔记 Lecture 20: Fair Division(公平分配)(本系列完结撒花!)
  11. 概率图模型: Coursera课程资源分享和简介
  12. ehcache使用java_Java分布式缓存框架Ehcache 使用(一)
  13. 【HUSTOJ】1054: 字符图形10-字母三角
  14. Python编程之求字符串长度
  15. 漏洞:互联网时代的阿喀琉斯之踵 挖掘漏洞哪家强?
  16. 你不需要完美-你需要的是行动与完成
  17. 三颗种子开发系统源码
  18. stm32学习笔记---STM32F4知识
  19. 6款办公软件,文案人员常用到
  20. 按键精灵电脑版对接百度ai,告别字库(文字识别篇)

热门文章

  1. 【OpenAI】Python:基于 Gym-CarRacing 的自动驾驶项目(3) | 路径训练功能的实现 | 规划与决策 | 路径平滑 | 利用公式进行目标速度预测
  2. C++ 自创钉钉直播刷赞器
  3. RK3568平台开发系列讲解(环境篇)编译 Android 固件
  4. C语言窗口获取焦点,阻止子View获取焦点方法
  5. RPG 类型游戏开发基础教程
  6. Excel 做相关性分析
  7. 进程调度算法之先到先服务
  8. The Tomcat connector configured to listen on port 10000 failed to start. The port may already be in
  9. LeetCode 5485. 找出最长的超赞子字符串 (状态压缩、二进制、位运算、前缀和)
  10. python对接微软文字转语音