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

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

图的m着色问题的问题提出是,给定图 和m种颜色,如下图所示,用这些颜色为图G的各顶点着色,每个顶点着一种颜色。问是否有一种着色法使G中每条边的2个顶点着不同的颜色。采用回溯法判断该图的色数。

#include "stdafx.h" #include
#include
#include
#include
using namespace std;const int NUM = 12;int N, M;// 顶点个数和颜色数int g[NUM][NUM];//临接矩阵int color[NUM];//多少种涂色方式int solution_count = 0;//判断 g[k] 周围有没有 bool ok(int k) {
for (int j = 1; j <= N; ++j) {
if (g[j][k] == 1 && color[k] == color[j]) return false; } return true;}void DFS(int nodeV) {
if (nodeV > N) {
for (int i = 1; i <= N; ++i) cout << color[i] << " "; //超出界限了 solution_count++; cout << endl; return; } for (int i = 1; i <= M; ++i) {
//m种颜色 color[nodeV] = i; if (ok(nodeV)) DFS(nodeV + 1); color[nodeV] = 0; }}int main() {
cin >> N >> M; int a, b; while (cin >> a >> b &&a &&b) {
g[a][b] = g[b][a] = 1; } DFS(1); cout << "\n total_solution = " << solution_count << endl; getchar(), getchar(); return 0;}

转载地址:http://huyzi.baihongyu.com/

你可能感兴趣的文章
linux学习之source命令与alias(别名)使用
查看>>
MYSQL常用查询
查看>>
安装Linux虚拟机绑定IP操作
查看>>
centos7离线安装 mysql
查看>>
mysql学习使用一(查询)
查看>>
Linux 学习之sed命令详解
查看>>
JAVA基础——常用IO使用
查看>>
spring框架pom.xml文件解析
查看>>
代码比较工具DiffMerge的下载和使用
查看>>
linux学习之vim全选,全部复制,全部删除
查看>>
linux 学习之awk命令
查看>>
linux学习之查找文件find,locate,whereis使用
查看>>
JS中$含义及用法
查看>>
web学习之ajax记录
查看>>
解决报错 “build.sh /bin/bash^M: 坏的解释器:没有那个文件或目录”
查看>>
linux学习之tr操作符用法
查看>>
shell的dirname $0和readlink用法
查看>>
设计模式——设计模式三大分类以及六大原则
查看>>
Android开发——ListView局部刷新的实现
查看>>
Android开发——ListView的复用机制源码解析
查看>>