图的m着色问题
【问题描述】
给定无向连通图G和m种不同的颜色。用这些颜色为图G的各顶点着色,每个顶点着一种颜色。如果有一种着色法使G中每条边的2个顶点着不同颜色,则称这个图是m可着色的。图的m着色问题是对于给定图G和m种颜色,找出所有不同的着色法。
【编程任务】
对于给定的无向连通图G和m种不同的颜色,编程计算图的所有不同的着色法。
【输入格式】
第1行有3个正整数n,k 和m,表示给定的图G有n个顶点和k条边,m种颜色。顶点编号为1,2,…,n。接下来的k行中,每行有2个正整数u,v,表示图G 的一条边(u,v)。
【输出格式】
程序运行结束时,将计算出的不同的着色方案数输出。
【输入样例】
5 8 4
1 2
1 3
1 4
2 3
2 4
2 5
3 4
4 5
【输出样例】
48

【解题思路】
其实这道题刚开始依然没思路(搜索刚开始做得太不熟练,,,。。。求原谅),fye大爷再次典型梦中人!!!!
经大爷点拨之后这道题就非常清晰了。。。其实我们可以用到类似前面部落卫队的思路:仇敌关系和颜色关系其实可以用同一种表示方法;
f[i][j]表示与i相连的点有几个是颜色j;
因为同色的不能连在一起,所以f[i][j]为0时可取,非0时不可取;
因为周围有可能有很多个相同颜色的点,所以f数组必须是一个计数器(int),而不能是bool;
就这么着。。。


import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;public class tudemzhaosewenti {public static Set<String> set = new HashSet<String>();public static int n,k,m,a,b,count=0;public static int [] [] num;public static int []  color;public static boolean [] bool;public static void main(String[] args) {Scanner sc =new Scanner(System.in);n = sc.nextInt();k = sc.nextInt();m = sc.nextInt();num = new int [n+1][n+1];color = new int [n+1];bool = new boolean [m+1];for (int i = 0; i < k; i++) {a=sc.nextInt();b=sc.nextInt();num[a][b]=num[b][a]=1;}f(1,"");System.out.println(count);}public static void f(int ren,String s){if(ren==n+1){set.add(s);count++;return;}for (int i = 1; i <=m; i++) {//  if(!bool[i]){int boo = 0;for (int j = 1; j <=n; j++) {if(num[ren][j]==1 && i==color[j] ){boo=1;break;}}if(boo==0){bool[i]=true;color[ren]=i;f(ren+1,s+i);color[ren]=0;bool[i]=false;}//    }}}}

(Java实现) 图的m着色问题相关推荐

  1. java 着色问题 回溯算法,C语言使用回溯法解旅行售货员问题与图的m着色问题

    旅行售货员问题 1.问题描述: 旅行售货员问题又称TSP问题,问题如下:某售货员要到若干个城市推销商品,已知各城市之间的路程(或旅费),他要选定一条从驻地出发,经过每个城市一遍最后回到驻地的路线,使总 ...

  2. Java 集合类图(转)

    1.java集合类图 1.1 1.2 上述类图中,实线边框的是实现类,比如ArrayList,LinkedList,HashMap等,折线边框的是抽象类,比如AbstractCollection,Ab ...

  3. Eclipse 插件用法:Eclipse 利用 Amateras UML 生成 Java 类图、时序图和 UML 类图

    文章目录 前言 一.安装 Eclipse 官方提供的安装框架 GEF 1.1.Eclipse 中第三方插件更新/安装策略 1.2.为什么选择 GEF 框架? 1.3.GEF 框架安装 二.安装 Ama ...

  4. 图的m着色问题(洛谷-P2819)

    题目描述 给定无向连通图G和m种不同的颜色.用这些颜色为图G的各顶点着色,每个顶点着一种颜色.如果有一种着色法使G中每条边的2个顶点着不同颜色,则称这个图是m可着色的.图的m着色问题是对于给定图G和m ...

  5. JAVA Swing 图形化界面编程

    JAVA Swing 图形化界面编程 目录 1.组件 1.1 基本组件 1.2. 组件边框 1.3. JToolBar 工具条 1.4 JColorChooser 颜色选择器 1.5 JFileCho ...

  6. 算法设计与分析——第五章回溯法 批处理作业调度 + 最大团问题+图的m着色问题

    文章目录 6.批处理作业调度(排列树) 7.最大团问题 8.图的m着色问题 6.批处理作业调度(排列树) 每一个作业Ji都有两项任务分别在2台机器上完成.每个作业必须先有机器1处理,然后再由机器2处理 ...

  7. java数据类型图:

    java数据类型图:                                 ┏数值型━┳━整数型:byte short int long               ┏基本数据类型━━┫   ...

  8. java类图与代码实例

    在 Java编程中,类图是一个非常重要的概念.类图的作用是用来展示类的结构以及类之间的关系.通过类图,可以很方便地展示出对象之间的关系.下面我将使用实例来演示一下我在学习 Java时的类图. 首先我们 ...

  9. 递归、回溯-图的m着色问题

    1.问题描述 给定无向连通图G=(V,E)和m种不同的颜色.用这些颜色为图G的各顶点着色,每个顶点着一种颜色. 是否有一种着色法使G中每条边的2个顶点着不同颜色.这个问题是图的m可着色判定问题. 输入 ...

最新文章

  1. git的一些常用操作
  2. spring29: JdbcTemplate详解
  3. VMware中的桥接模式、NAT(网络地址转换模式)、Host-only(主机模式):转自:http://blog.chinaunix.net/uid-11798538-id-3061551.html
  4. SAP Hybris Commerce product读取的调试截图
  5. P3335-[ZJOI2013]蚂蚁寻路【dp】
  6. 强化学习ppt_东台中等专业学校北大青鸟班PPT演讲大赛颁奖典礼顺利举行
  7. python when库_python 库收集
  8. EEGLAB的下载与安装
  9. IDEA生成SerialVersionUID
  10. 解决fullpage滑动,控制台的报错提示
  11. 人工神经网络理论及应用pdf,人工智能的相关书籍
  12. nginx防恶意刷新
  13. FT、DFT、FFT
  14. 网易2018校园招聘编程题真题集合3字符串碎片
  15. 开启xmp1还是2_“吃鸡”新版本倒计时1天,2个经典模式升级回归,老玩家泪目了!...
  16. 谷歌白帽SEO技术让你的搜索流量暴涨
  17. rs485数据线接反_数据信号TXD、RXD 发送和接受怎么区分正负极呢? 现在数据信号TXD、RXD需接RS485+ RS485-信号该怎么接呢...
  18. Oracle查询用户权限角色(dba_sys_privs)
  19. python day9
  20. 宜信支持多渠道前端方案介绍

热门文章

  1. “an error occurred while processing this directive”的解决方法
  2. wps图表中如何插入甘特图_如何通过使用D3可视化数据集来构建类似甘特图的图表...
  3. 用html5做的柱状图,使用h5新特性canvas简单生成一个柱状图
  4. Math.round(); 四舍五入下取整
  5. 如何快速理解java水仙花数 详细思路讲解
  6. OpenGL学习脚印:立方体纹理和天空包围盒(Cubemaps And Skybox)
  7. 转 Win7家庭版升级为Win7旗舰版;超级简单方法
  8. c语言快速复数的比较大小,C语言实现常用的复数运算
  9. 如何快速安装vue-cli脚手架
  10. python循环叠加求和_python基础教程python使用隐式循环快速求和的实现示例