题意:给了一个有 n 个点 m 条边的无向图,要求用黑、白两种色给图中顶点涂色,相邻的两个顶点不能涂成黑色,求最多能有多少顶点涂成黑色。图中最多有 100 个点

该题是求最大独立集团  最大团点的数量=补图中最大独立集点的数量  ----->最大独立集团的数量 =补图中最大团点的数量  是完全对称的

并且要打印出点

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<iostream>
  4. using namespace std;
  5.  
  6. #define N 110
  7.  
  8. int n;
  9. int mp[N][N];
  10. int ans;
  11. int alt[N][N];
  12. int Max[N];
  13. int path[N];
  14. int anspath[N];
  15.  
  16. bool dfs(int cur,int tot)//cur是s1集合的个数
  17. {
  18. if(==cur)
  19. {
  20. if(tot>ans)
  21. {
  22. ans=tot;
  23. for(int i=;i<=tot;i++)anspath[i]=path[i];
  24. return true;
  25. }
  26. return false;
  27. }
  28.  
  29. for(int i=;i<cur;i++)
  30. {
  31. if( tot+cur-i<=ans )return false;
  32. int u=alt[tot][i];
  33. if( Max[u]+tot<=ans )return false;
  34. int next=;
  35. for(int j=i+;j<cur;j++)
  36. if(mp[u][ alt[tot][j] ])alt[tot+][next++]=alt[tot][j];
  37. path[tot+]=u;
  38. if(dfs(next,tot+)) return ;
  39. }
  40. return ;
  41. }
  42.  
  43. int maxclique(void)
  44. {
  45. ans=;
  46.  
  47. memset(Max,,sizeof(Max));
  48. for(int i=n-;i>=;i--)
  49. {
  50. int cur=;
  51. path[]=i;
  52. for(int j=i+;j<n;j++)if(mp[i][j])alt[][cur++]=j;//1为s1集合
  53. dfs(cur,);
  54. Max[i]=ans;
  55. }
  56. return ans;
  57. }
  58.  
  59. int main()
  60. {
  61. int cas;
  62. cin>>cas;
  63. while(cas--)
  64. {
  65. int m;
  66. memset(mp,,sizeof mp);
  67. scanf("%d%d",&n,&m);
  68. while(m--)
  69. {
  70. int a,b;
  71. scanf("%d%d",&a,&b);
  72. mp[a-][b-]=mp[b-][a-]=;
  73.  
  74. }
  75. int k=maxclique();
  76. printf("%d\n",k);
  77. for(int i=;i<=k;i++)
  78. {
  79. printf("%d",anspath[i]+);
  80. if(i==k)printf("\n");
  81. else printf(" ");
  82. }
  83. }
  84. return ;
  85. }

Garph Coloring的更多相关文章

  1. 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 ...

  2. CF149D. Coloring Brackets[区间DP !]

    题意:给括号匹配涂色,红色蓝色或不涂,要求见原题,求方案数 区间DP 用栈先处理匹配 f[i][j][0/1/2][0/1/2]表示i到ji涂色和j涂色的方案数 l和r匹配的话,转移到(l+1,r-1 ...

  3. 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 ...

  4. CodeForces #369 C. Coloring Trees DP

    题目链接:C. Coloring Trees 题意:给出n棵树的颜色,有些树被染了,有些没有.现在让你把没被染色的树染色.使得beauty = k.问,最少使用的颜料是多少.   K:连续的颜色为一组 ...

  5. CodeForces 149D Coloring Brackets

    Coloring Brackets time limit per test: 2 seconds memory limit per test: 256 megabytes input: standar ...

  6. C. Coloring Trees DP

    传送门:http://codeforces.com/problemset/problem/711/C 题目: C. Coloring Trees time limit per test 2 secon ...

  7. codeforces 711C C. Coloring Trees(dp)

    题目链接: C. Coloring Trees time limit per test 2 seconds memory limit per test 256 megabytes input stan ...

  8. POJ 1419 Graph Coloring(最大独立集/补图的最大团)

    Graph Coloring Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 4893   Accepted: 2271   ...

  9. URAL 1080 Map Coloring(染色)

    Map Coloring Time limit: 1.0 secondMemory limit: 64 MB We consider a geographical map with N countri ...

随机推荐

  1. 【bzoj3489】 A simple rmq problem

    http://www.lydsy.com/JudgeOnline/problem.php?id=3489 (题目链接) 题意 在线求区间不重复出现的最大的数. Solution KDtree竟然能够处 ...

  2. 解题:UOJ #46 玄学

    题面 二进制分组,修改把区间拆开丢在后面,合并的时候归并最后两块:查询在对应节点上二分答案 #include<cstdio> #include<cstring> #includ ...

  3. 《剑指offer》— JavaScript(28)数组中出现次数超过一半的数字

    数组中出现次数超过一半的数字 题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超 ...

  4. php session 登录退出验证

    login.html 负责收集用户填写的登录信息 <html><head><title></title></head><body> ...

  5. Flink窗口介绍及应用

    Windows是Flink流计算的核心,本文将概括的介绍几种窗口的概念,重点只放在窗口的应用上. 本实验的数据采用自拟电影评分数据(userId, movieId, rating, timestamp ...

  6. js基础回顾----原型链和原型

    所有的对象都可以自由扩展属性 (null 除外) 所有的引用类型(对象,数组,函数)都有一个_proto_属性 所有的函数都有一个prototype属性 所有引用类型对象的_proto_属性指向它的的 ...

  7. RabbitMQ入门介绍

    1.关于AMQP协议 AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设 ...

  8. mysql先排序在分组

    – 表的结构 `test`– CREATE TABLE IF NOT EXISTS `test` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varcha ...

  9. 20155226 2016-2017-2 《Java程序设计》第6周学习总结

    20155226 2016-2017-2 <Java程序设计>第6周学习总结 教材学习内容总结 第十章 输入/输出 10.1 InputStream与OutputStream 1 . 串流 ...

  10. 工作目录与os.getcwd()

    假设某程序在/root/a/aa.py,在shell,当前pwd为/root,输入./a/aa.py运行py程序,则爱程序的工作目录是/root.而不是程序所在文件夹,os.getcwd()就是查看工 ...