部落卫队问题(深度优先搜索)

Description

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

.编程任务: 

给定byteland 部落中居民间的仇敌关系,编程计算组成部落卫队的最佳方案。 

Input

第1行有2个正整数n(n<=100)和m,表示byteland部落中有n位居民,居民间有m个仇敌关系。居民编号为1,2,…,n。接下来的m行中,每行有2个正整数u和v,表示居民u与居民v是仇敌。

Output

第1行是部落卫队的顶人数; 
第2行是卫队组成xi ,1 ≤ i ≤ n ,xi=0 表示居民i不在卫队中,xi =1表示居民i在卫队中。

Sample Input

 

 
   

 

Sample Output

 

 
   
 
   
解题思路:用多个数组储存仇敌关系、选择方案,并且用搜索,如果现在的人数大于最大的人数就更新最大人数,然后循环,如果该人不在卫队里就把它放进去,继续搜索,最后输出总数,并且输出01 

代码:
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
   
 
  

你可能感兴趣的:(深度优先搜索)