BZOJ3632:外太空旅行(最大团,DFS)

news/2024/8/26 18:00:18 标签: 数据结构与算法

Description

在人类的触角伸向银河系的边缘之际,普通人上太空旅行已经变得稀松平常了。某理科试验班有n个人,现在班主任要从中选出尽量多的人去参加一次太空旅行活动。
可是n名同学并不是和平相处的。有的人,比如小A和小B整天狼狈为奸,是好朋友;但还有的人,比如杜鲁门和赫鲁晓夫就水火不相容。这n名同学,由于是理科生,都非常的理性,所以“朋友的朋友就是朋友”和“敌人的朋友就是敌人”这两句话对这些同学无效。换句话说,有可能小A和小B是朋友,小B和小C是朋友,但是小A和小C两人势如水火。
任意两个人之间要不就是敌人,要不就是朋友。
因为在太空船上发生人员斗殴事件是很恶劣也很危险的,因此选出来参加旅行活动的同学必须互相之间都是朋友。你的任务就是确定最多可以选多少人参加旅行。

Input

第一行一个整数n(1<=n<=50)。所有的同学按照1~n编号。
接下来若干行,每行两个用空格隔开的整数a, b(1<=a,b<=n),表示a和b是朋友。
注意:如果一个数对(x,y)(或者(y,x))没有在文件中出现,那么编号为x和y的两个同学就是敌人。

Output

仅仅一个数,即最多可以选多少人参加活动。

Sample Input

4
1 2
2 3
3 1
1 4

Sample Output

3
说明:选编号为1,2,3的同学参加,他们互相都是朋友。

Solution

最大团……$NPC$直接爆搜加剪枝。

具体搜法可以看这个博客。

Code

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 #include<vector>
 5 #define N (59)
 6 using namespace std;
 7 
 8 int n,u,v,ans,Max[N],G[N][N];
 9 
10 bool DFS(vector<int> &g,int x)
11 {
12     int s=g.size();
13     if (!s) return x>ans?ans=x:0;
14     for (int i=0; i<s; ++i)
15     {
16         if (x+s<=ans) return 0;
17         if (x+Max[g[i]]<=ans) return 0;
18         vector<int>v; v.clear();
19         for (int j=i+1; j<s; ++j)
20             if (G[g[i]][g[j]]) v.push_back(g[j]);
21         if (DFS(v,x+1)) return 1;
22     }
23     return 0;
24 }
25 
26 int main()
27 {
28     scanf("%d",&n);
29     while (scanf("%d%d",&u,&v)!=EOF) G[u][v]=G[v][u]=1;
30     for (int i=n; i>=1; --i)
31     {
32         vector<int>v; v.clear();
33         for (int j=i+1; j<=n; ++j)
34             if (G[i][j]) v.push_back(j);
35         DFS(v,1); Max[i]=ans;
36     }
37     printf("%d\n",ans);
38 }

转载于:https://www.cnblogs.com/refun/p/10438730.html


http://www.niftyadmin.cn/n/1373461.html

相关文章

选个什么样的做老婆

发信人: happybubble (快乐泡泡), 信区: Campus_East标 题: 选个什么样的做老婆zz发信站: 同舟共济站 (Tue Jul 27 09:44:59 2004), 站内 【 以下文字转载自 Girl 讨论区 】发信人: happybubble (快乐泡泡), 信区: Girl标 题: 选个什么样的做老婆zz发信站: BBS 同舟共济站 (…

向天真的女生投降摘录的两句话

一个男人最需要的就是一个词——志气&#xff0c;男人没有志气还算什么男人&#xff0c;见了权贵就低头&#xff0c;见了钞票就下跪&#xff0c;见了美女就走不动路算什么男人。 ......所以&#xff0c;生命、自由&#xff0c;享受主宰自己肉体和精神的快乐都是任何力量不可剥夺…

最近很忙!更新下近况!

最近很忙&#xff01;更新下近况&#xff01; HEVC研发一期基本接触&#xff0c; 也早已投入商用了&#xff01; 目前正在使用opencl 来进一步加速HEVC编码&#xff01; CPUGPU编码可能还有很长的路要走&#xff0c; 但是前途无限啊&#xff01;

中国高校十大热门BBS

发信人: vanbust (melody), 信区: CollegeForum 标 题: 中国高校十大热门BBS 发信站: 一塌糊涂 BBS (Tue Jul 27 10:35:19 2004), 本站(ytht.net) 1.一塌糊涂——北京大学 http://ww.ytht.net 点评&#xff1a;YTHT堪称中国高校最自由民主的BBS网站。在一两年前&#xff0c;…

用OpenCL实现HEVC中ME模块的测试数据分析

使用opencl来实现编码算法中运动搜索模块&#xff01; 下面测试数据时在GTX570上的测试结果&#xff1a; LCU为32x32, 100帧720P, CPU上纯C算法使用搜索时间是67s, GPU上是0.915s LCU为16x16, CPU 是76.8s, GPU上是1.6s LCU为8x8, CPU 是82.5s, GPU上是4.2s 同样的程序…

Javascript基础之Array数组API

Javascript数组原型提供的方法非常之多&#xff0c;主要分为三种&#xff1a; 直接修改原数组原数组不变&#xff0c;返回新数组数组遍历方法直接修改原数组的API pop()删除一个数组中的最后的一个元素&#xff0c;并且返回这个元素 push()添加一个或者多个元素到数组末尾&…

与中国高考状元比 美国的高考状元什么样?

发信人: winking88 (rightman), 信区: TsinghuaCent 标 题: 与中国高考状元比 美国的高考状元什么样&#xff1f; (zt) 发信站: BBS 水木清华站 (Wed Jul 28 10:39:48 2004), 站内与中国高考状元比 美国的高考状元什么样&#xff1f; 2004-07-26 这两天&#xff0c;南京外国…

OpenCL的一个简单例子!

1 Hello OpenCL 这里编写一个最简单的示例程序&#xff0c;演示OpenCl的基本使用方法&#xff1a; 1.首先可以从Nvdia或者Amd或者Intel或者所有OpenCl成员的开发者网站上下载一份他们实现的OpenCL的SDK。虽然不同公司支持了不同版本的OpenCL和扩展ext&#xff0c;但是在相同版…