部落卫队
【问题描述】
       原始部落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. 摊手:工作五年我拿了两次 N+1 赔偿!
  2. json格式值班表解析
  3. linux服务器视窗,linux窗口管理器介绍
  4. html5中底部对齐怎么写,如何将页脚(div)与页面底部对齐?
  5. IOS基础之Foundation框架常用类NSFileManager,DSDate,CGPoint,CGSize,copy,单例
  6. 插件开发 之 生成代码
  7. python用什么编译器-python应选什么编译工具
  8. 使用nginx负载均衡的webservice wsdl访问不到_Nginx 反向代理、负载均衡图文教程,写得太好了!...
  9. spring boot 搭建博客
  10. Word中把竖排文字里的数字变横向
  11. < 数据结构 > 队列的实现
  12. IP网络摄像机安装注意事项
  13. 非QQ会员如何克隆好友
  14. C#计算一年有多少周
  15. div盒模型宽高计算
  16. android 使用iphone线控耳机,耳机 篇一:关于安卓手机怎么用苹果专用耳机的问题...
  17. 效率(1)Excel常用操作技巧
  18. Linux如何挂载exFAT格式移动硬盘
  19. frp内网穿透服务使用
  20. 浏览器微信下载安装的解决办法

热门文章

  1. 深度思维,不过是为了余生获得更多的自由
  2. java中JWT设置过期时间_JWT(JSON Web Token)自动延长到期时间
  3. 五子棋游戏-3(判断五子连心)
  4. ArcGIS中ArcMap新建矢量点线面要素图层并手动划定要素图层范围区域
  5. 微信小程序-双滑块组件
  6. BraTs数据集处理及python读取.nii文件
  7. 匕首线切割图纸下载_匕首击剑简介
  8. 学生机房管理小助手去除控制续
  9. 汇川H3U标准程序,程序有本体脉冲控制的三轴定位,有总线控制的汇川伺服定位
  10. PNI磁传感器精度为什么这么高?