原题链接
暴力枚举:3^20 一定超时
可以对暴力进行优化:对于有n个点的连通块块,只需最多枚举3 * 2 ^ (n - 1),因为只有第一个点3种颜色都可以染,后续的点都受之前枚举过且与自己相连的点的约束,最多只能染两种颜色。而连通块之间的染色方案互不干扰,因此答案为各连通块染色方案的乘积。

#include <bits/stdc++.h>using namespace std;typedef long long LL;const int N = 30;int tem[N], cnt, n, m;
int g[N][N], c[N];
bool st[N];void dfs(int u) {   //将所有连通块中的点存到tem数组st[u] = 1;tem[cnt ++] = u;for (int i = 1; i <= n; i ++) {if (!st[i] && g[i][u])  dfs(i);}
}bool check(int u, int j) {  //判断点u是否可以染成颜色jfor (int i = 1; i <= n; i ++) {if (g[u][i] && c[i] == j)   return false;}return true;
}void dfs(int u, int &res) {if (u == cnt)   {res ++; //枚举完所有点,方案数加1return ;}for (int i = 1; i <= 3; i ++) {if (check(tem[u], i)) {c[tem[u]] = i;dfs(u + 1, res);c[tem[u]] = 0;  //tem[u]点的颜色归为0,避免对tem[0] ~ tem[u - 1]点染色产生干扰}}
}int main(){cin >> n >> m;while (m --) {int a, b;cin >> a >> b;g[a][b] = g[b][a] = 1;}LL ans = 1;for (int i = 1; i <= n; i ++) {if (!st[i]) {cnt = 0;    //重置tem数组元素的个数dfs(i);     //获得连所有通块中的点int t = 0;  //记录连通块染色的方案数dfs(0, t);  //计算染色方案数ans = ans * t;  //不同连通块之间的方案数独立,答案是各连通块染色方案的乘积}}cout << ans;return 0;
}

D - RGB Coloring 2相关推荐

  1. 数论三之排列组合Ⅱ——Virus Tree 2,RGB Coloring,123 Triangle,排列计数,排队,卡农

    丝且人一口 Virus Tree 2 description solution code RGB Coloring description solution code 123 Triangle des ...

  2. AtCoder Grand Contest 025 B - RGB Coloring

    B - RGB Coloring 求ax + by = k (0<=x<=n && 0<=y<=n)的方案数,最后乘上C(n, x)*C(n,y) 代码: #i ...

  3. AtCoder Grand Contest 025

    B.RGB Coloring 绿色可以看作拿红和蓝都涂了,那么只需要满足A*a + B*b = K && 0 ≤ a,b ≤ n,答案加上C(n,a)*C(n,b) #include ...

  4. AtCoder Beginner Contest 199 (Sponsored by Panasonic) A~E 题解

    ABC199 A~E [A - Square Inequality](https://atcoder.jp/contests/abc199/tasks/abc199_a) 题目大意 输入格式 输出格式 ...

  5. Java面试题全集(C)

    这部分主要是开源Java EE框架方面的内容,包括Hibernate.MyBatis.Spring.Spring MVC等,由于Struts 2已经是明日黄花,在这里就不讨论Struts 2的面试题, ...

  6. 色彩搭配六色rgb_除非您是色彩理论方面的专家,否则色码编码人员指南请勿使用rgb代替...

    色彩搭配六色rgb 第一部分:不要使用RGB,除非您是色彩理论方面的专家. (Part I. Don't use RGB Unless you're an expert in color theory ...

  7. RGB Color Codes Chart

    RGB Color Codes Chart RGB颜色空间 RGB颜色空间或RGB颜色系统,从红色.绿色和蓝色的组合中构造所有颜色. 红色.绿色和蓝色各使用8位,它们的整数值从0到255.这使得256 ...

  8. OpenCV YUV 与 RGB的互转(草稿)

    YUV 转 RGB cv::Mat yuvImg; /*//下面两行是我自己代码里用来构成YUV图像的数据,可以忽略 yuvImg.create(pInput->height*3/2, pInp ...

  9. 常用图像格式(PNG,JPG)到SGI图像格式(RGB,BW)的转换

    常用图像格式(PNG,JPG)到SGI图像格式(RGB,BW)的转换 网站链接 根据该网站的描述和给的相应例子,自己改写了一个把png,jpg等常用格式的图片转化为rgb,bw格式的代码. #incl ...

最新文章

  1. Comprehensive Guide to build a Recommendation Engine from scratch (in Python) / 从0开始搭建推荐系统...
  2. java中如何忽略字符串中的转义字符--转载
  3. 在python中使用关键字define定义函数_python等价于'define func()'或如何在python中注释掉函数调用...
  4. 两道二分coming~
  5. windows下的终端工具和产品力
  6. JavaGUI版本销售管理系统
  7. 大学生医保的报销范围
  8. react视频教程百度云资源链接
  9. 考研408-计算机组成原理-总线
  10. Linux 查看文件格式和更改文件格式
  11. DOTCPP:有关1125心得
  12. mysql免安装部署_MySQL免安装版配置部署
  13. Java - LinkedHashMap(有序 map)获取第一个元素和最后一个元素
  14. Android——检测摄像头是否可用
  15. 电脑小白 给 电脑大白 讲 电脑基础(软件推荐篇)
  16. Redis单线程还是多线程?IO多路复用原理
  17. Mosquitto 在Linux服务器上的部署过程中以及踩过的坑
  18. 098 复习:中值定理习题之型一:仅有ξ
  19. 即将取代Maven和Gradle的新一代更强更快的构建工具(至尊典藏版)
  20. interrupt request level - IRQL

热门文章

  1. float之文字环绕问题
  2. 星网视易开机显示服务器负载,[系统集成]星网视易可视对讲解决方案
  3. 百度云存储教程---免费建立自己的静态站点
  4. MOM(一)数据读入
  5. 统计学习方法|决策树原理剖析及实现
  6. Unity官网打不开,试试新地址吧!
  7. 荣耀5.0以上设备一键激活Xposed框架的方法
  8. 伪造老板声音要求转账,被AI骗走173万!
  9. 机器学习_基于arctan的逻辑回归
  10. 鼠标不能动,插上了但没反应