博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
图的 M 着色问题
阅读量:6689 次
发布时间:2019-06-25

本文共 663 字,大约阅读时间需要 2 分钟。

【题目描述】

给定无向连通图 G 和 M 种不同的颜色,用这些颜色为图 G 的各顶点着色,
每个顶点着一种颜色。如果有一种着色法使 G 中每条边的 2 个顶点着不同的颜
色,则称这个图是 M 可着色的。图的 M 着色问题是对于给定图 G 和 M 种颜色,
找出所有不同的着色法。
对于给定的无向连通图 G 和 M 种不同的颜色,编程计算图的所有不同的着

色法。

【输入】

第一行有 3 个正整数 N,K 和 M,表示给定的图 G 有 N 个顶点和 K 条边,M 种
颜色。顶点编号为 1,2……,N。接下来的 K 行中,每行有 2 个正整数 U,V,
表示图 G 的一条边(U,V)。

数据范围:1<N<=100 1<K<=2500 1<M<=6

【输出】

不同的着色方案数

【样例输入】

5 8 4
1 2
1 3
1 4
2 3
2 4
2 5
3 4

4 5

【样例输出】

48

============题解============

Dfs。

可以用栈来存图,下标是点编号,每次把这个点所联通的点编号push_back进去,注意这里要正反各存一遍。然后开一个数组a[i][j],记录第i个点所联通的点中为第j种颜色的点的数量,dfs时遍历每一个点,枚举每种颜色,当a[i][j]为0时此点才可以被染色,那么就将此点所连的所有点的a[i][j]++,之后递归,出函数后恢复,每次递归时计数++,当达到点数时ans++。

转载于:https://www.cnblogs.com/linjia64/p/9607153.html

你可能感兴趣的文章
Microsoft的现代数据管理
查看>>
Ruby开发者已可通过Fog管理Microsoft Azure服务
查看>>
Visual Studio 2017 15.6发布
查看>>
如何迅速分析出系统CPU的瓶颈在哪里?
查看>>
逢宕机必谈起,多云是真火还是假热?
查看>>
Chrome和HTTPS:安全Web的征途
查看>>
天猫双十一这十年:从“人肉云计算”到“脉冲计算”经历了什么
查看>>
软件专家的对话模式(第一部分)
查看>>
访谈:当开发者成为技术主管 如何领导团队
查看>>
如何选取Linux容器镜像
查看>>
敏捷世界里中层经理的角色
查看>>
Facebook曝至今最严重安全漏洞,超过5000万用户受影响
查看>>
亚马逊一口气发布了9款机器学习产品
查看>>
不变性改变一切,包括微服务
查看>>
用行为驱动开发和面向接口的设计做微服务开发
查看>>
Rancher网络全解读
查看>>
Beego自动化文档(最新版)
查看>>
自动备份MySQL数据库并发送邮件的SHELL脚本
查看>>
GenericObjectPool 避免泄漏
查看>>
vue2.0源码解读之选项合并策略 optionMergeStrategies
查看>>