Garph Coloring
题意:给了一个有 n 个点 m 条边的无向图,要求用黑、白两种色给图中顶点涂色,相邻的两个顶点不能涂成黑色,求最多能有多少顶点涂成黑色。图中最多有 100 个点
该题是求最大独立集团 最大团点的数量=补图中最大独立集点的数量 ----->最大独立集团的数量 =补图中最大团点的数量 是完全对称的
并且要打印出点
- #include<cstdio>
- #include<cstring>
- #include<iostream>
- using namespace std;
- #define N 110
- int n;
- int mp[N][N];
- int ans;
- int alt[N][N];
- int Max[N];
- int path[N];
- int anspath[N];
- bool dfs(int cur,int tot)//cur是s1集合的个数
- {
- if(==cur)
- {
- if(tot>ans)
- {
- ans=tot;
- for(int i=;i<=tot;i++)anspath[i]=path[i];
- return true;
- }
- return false;
- }
- for(int i=;i<cur;i++)
- {
- if( tot+cur-i<=ans )return false;
- int u=alt[tot][i];
- if( Max[u]+tot<=ans )return false;
- int next=;
- for(int j=i+;j<cur;j++)
- if(mp[u][ alt[tot][j] ])alt[tot+][next++]=alt[tot][j];
- path[tot+]=u;
- if(dfs(next,tot+)) return ;
- }
- return ;
- }
- int maxclique(void)
- {
- ans=;
- memset(Max,,sizeof(Max));
- for(int i=n-;i>=;i--)
- {
- int cur=;
- path[]=i;
- for(int j=i+;j<n;j++)if(mp[i][j])alt[][cur++]=j;//1为s1集合
- dfs(cur,);
- Max[i]=ans;
- }
- return ans;
- }
- int main()
- {
- int cas;
- cin>>cas;
- while(cas--)
- {
- int m;
- memset(mp,,sizeof mp);
- scanf("%d%d",&n,&m);
- while(m--)
- {
- int a,b;
- scanf("%d%d",&a,&b);
- mp[a-][b-]=mp[b-][a-]=;
- }
- int k=maxclique();
- printf("%d\n",k);
- for(int i=;i<=k;i++)
- {
- printf("%d",anspath[i]+);
- if(i==k)printf("\n");
- else printf(" ");
- }
- }
- return ;
- }
Garph Coloring的更多相关文章
- Codeforces Round #369 (Div. 2)---C - Coloring Trees (很妙的DP题)
题目链接 http://codeforces.com/contest/711/problem/C Description ZS the Coder and Chris the Baboon has a ...
- CF149D. Coloring Brackets[区间DP !]
题意:给括号匹配涂色,红色蓝色或不涂,要求见原题,求方案数 区间DP 用栈先处理匹配 f[i][j][0/1/2][0/1/2]表示i到ji涂色和j涂色的方案数 l和r匹配的话,转移到(l+1,r-1 ...
- Codeforces Round #369 (Div. 2) C. Coloring Trees DP
C. Coloring Trees ZS the Coder and Chris the Baboon has arrived at Udayland! They walked in the pa ...
- CodeForces #369 C. Coloring Trees DP
题目链接:C. Coloring Trees 题意:给出n棵树的颜色,有些树被染了,有些没有.现在让你把没被染色的树染色.使得beauty = k.问,最少使用的颜料是多少. K:连续的颜色为一组 ...
- CodeForces 149D Coloring Brackets
Coloring Brackets time limit per test: 2 seconds memory limit per test: 256 megabytes input: standar ...
- C. Coloring Trees DP
传送门:http://codeforces.com/problemset/problem/711/C 题目: C. Coloring Trees time limit per test 2 secon ...
- codeforces 711C C. Coloring Trees(dp)
题目链接: C. Coloring Trees time limit per test 2 seconds memory limit per test 256 megabytes input stan ...
- POJ 1419 Graph Coloring(最大独立集/补图的最大团)
Graph Coloring Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 4893 Accepted: 2271 ...
- URAL 1080 Map Coloring(染色)
Map Coloring Time limit: 1.0 secondMemory limit: 64 MB We consider a geographical map with N countri ...
随机推荐
- 【bzoj3489】 A simple rmq problem
http://www.lydsy.com/JudgeOnline/problem.php?id=3489 (题目链接) 题意 在线求区间不重复出现的最大的数. Solution KDtree竟然能够处 ...
- 解题:UOJ #46 玄学
题面 二进制分组,修改把区间拆开丢在后面,合并的时候归并最后两块:查询在对应节点上二分答案 #include<cstdio> #include<cstring> #includ ...
- 《剑指offer》— JavaScript(28)数组中出现次数超过一半的数字
数组中出现次数超过一半的数字 题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超 ...
- php session 登录退出验证
login.html 负责收集用户填写的登录信息 <html><head><title></title></head><body> ...
- Flink窗口介绍及应用
Windows是Flink流计算的核心,本文将概括的介绍几种窗口的概念,重点只放在窗口的应用上. 本实验的数据采用自拟电影评分数据(userId, movieId, rating, timestamp ...
- js基础回顾----原型链和原型
所有的对象都可以自由扩展属性 (null 除外) 所有的引用类型(对象,数组,函数)都有一个_proto_属性 所有的函数都有一个prototype属性 所有引用类型对象的_proto_属性指向它的的 ...
- RabbitMQ入门介绍
1.关于AMQP协议 AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设 ...
- mysql先排序在分组
– 表的结构 `test`– CREATE TABLE IF NOT EXISTS `test` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varcha ...
- 20155226 2016-2017-2 《Java程序设计》第6周学习总结
20155226 2016-2017-2 <Java程序设计>第6周学习总结 教材学习内容总结 第十章 输入/输出 10.1 InputStream与OutputStream 1 . 串流 ...
- 工作目录与os.getcwd()
假设某程序在/root/a/aa.py,在shell,当前pwd为/root,输入./a/aa.py运行py程序,则爱程序的工作目录是/root.而不是程序所在文件夹,os.getcwd()就是查看工 ...