对于给定的无向连通图G和m种不同的颜色计算图的所有不同着色法
问题描述
给定无向连通图G和m种不同的颜色。用这些颜色为图G的各顶点着色,每个顶点着一种颜色。
如果有一种着色法使图G中每条边的2个顶点着不同颜色,则称这个图是m可着色的。
图的m着色问题是对于给定图G和m种颜色,找出所有不同的着色法。
你的任务是对于给定的无向连通图G和m种不同的颜色,编写一个JAVA程序来计算无向图G的所有不同着色法。
输入数据格式为:
第一行输入无向图的顶点数 v ,边数 e 和可用的颜色数 cm
第二行开始至第 e 行输入两个顶点连接的边(u,v),u和v输入时以空格区分。
输入样例数据:
5 8 4
1 2
1 3
1 4
2 3
2 4
2 5
3 4
4 5
输出结果:
48
算法实现
package com.bean.algorithm.graph;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
/*
* 【问题描述】
* 给定无向连通图G和m种不同的颜色。用这些颜色为图G的各顶点着色,每个顶点着一种颜色。
* 如果有一种着色法使G中每条边的2个顶点着不同颜色,则称这个图是m可着色的。
* 图的m着色问题是对于给定图G和m种颜色,找出所有不同的着色法。
* 【任务】
* 对于给定的无向连通图G和m种不同的颜色,编程计算图的所有不同的着色法。
* 【输入格式】
* 第1行有3个正整数n,k 和m,表示给定的图G有