图的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实现--回溯法--图的m着色问题

    (转自:http://blog.csdn.net/lican19911221/article/details/26264471) 图的m着色问题的Java实现(回溯法) 具体问题描述以及C/C++实现 ...

  2. 回溯法 | 图的m着色问题

    学习链接:算法 图的M着色问题 虽然今早9点才醒来,10点才来教室,但是coding得很高效.吃个早餐,拉个粑粑的时间,就把算法书上的[图的m着色]问题看明白了,大脑里也形成了解决问题的框架. 其实这 ...

  3. 【回溯】图的m着色问题

    问题 C: [回溯]图的m着色问题 时间限制: 1 Sec  内存限制: 128 MB提交: 1  解决: 1[提交][状态][讨论版] 题目描述 给定无向连通图G=(V, E)和m种不同的颜色,用这 ...

  4. 编程之美:1.9高效率安排见面会 图的m着色问题 回溯法

    原书问题,可以转换为图的m着色问题 ,下面该问题的代码 这里有参考ppt与code,免积分载 http://download.csdn.net/detail/u011467621/6341195 // ...

  5. java Swing图形化界面

    学过java的人应该对java的图形化界面很是反感,特别是接触java不久的人.如果想和其他语言那样用鼠标拖拽,可以使用wondosbulider插件.但是用起来也不是那么方便.当然对于不乐意写代码的 ...

  6. java数据类型图:

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

  7. JAVA之旅(三十一)——JAVA的图形化界面,GUI布局,Frame,GUI事件监听机制,Action事件,鼠标事件

    JAVA之旅(三十一)--JAVA的图形化界面,GUI布局,Frame,GUI事件监听机制,Action事件,鼠标事件 有段时间没有更新JAVA了,我们今天来说一下JAVA中的图形化界面,也就是GUI ...

  8. [题解]图的m着色问题

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

  9. Eclipse下生成/编辑Java类图或时序图(UML)[转载]

    一 引用文章 1.[eclipse下生成Java类图和时序图,生成UML图(更完整版)](https://blog.csdn.net/guomainet309/article/details/5302 ...

随机推荐

  1. 【Hadoop离线基础总结】Hive调优手段

    Hive调优手段 最常用的调优手段 Fetch抓取 MapJoin 分区裁剪 列裁剪 控制map个数以及reduce个数 JVM重用 数据压缩 Fetch的抓取 出现原因 Hive中对某些情况的查询不 ...

  2. Android Bluetooth How To--Based on Android L Bluedroid

    Android Bluetooth How To(Based on Android L Bluedroid) 持续更新中… 1.How to enable btsnoop log? a) UI Set ...

  3. OpenStack黄金十年:我与OpenStack的故事

    导读:从2010年到2020年,OpenStack项目整整走过了十个春夏秋冬.不管是OpenStack基金会,还是积极参与OpenStack社区的厂商.企业乃至开发者,想必都有肺腑之言想对OpenSt ...

  4. 将微服务运行在docker上遇到的问题一

    按照类似这样的流程: 但是去访问本机的 localhost:92 localhost:80 都没有任何的内容..... 这是什么原因? 重新再来一次 新写了一个微服务demo jar包: 相应的Doc ...

  5. Python基础语法day_04——操作列表

    day_04 遍历整个列表 我们创建列表时,需要输出整个列表,但是通常列表会很长,包含很多元素,当列表长度发生变化是,都必须修改代码.通过for循环,我们可以很轻易地输出整个列表. #遍历整个列表 创 ...

  6. 【题解】[SCOI2015]小凸玩矩阵

    题目链接 思路:题目要求变相解答一下,求出是否有n-k个数,不大于当前求的第k个数 而每一行每一列只能有一个数,就可以得到一个二分图的思路,边上的权值就是第i行第j列这个数的值 对于答案就是第k大的数 ...

  7. Python-实现sign签名接口校

    前言 在之前的随笔中,我们已经学过了如何使用使用JMeter和Postman实现sign签名接口校验的接口测试,今天我们来学习一下如何写Python脚本实现签名接口的接口测试. 签名接口: 地址: h ...

  8. mybatis开发,你用 xml 还是注解?我 pick ...

    最近在看公司项目时发现有的项目mybatis是基于注解开发的,而我个人的习惯是基于xml文件开发. 对于mybatis注解开发的原理理解不够,于是翻阅了部分源码,写下此文.主要介绍了mybatis开发 ...

  9. 00005-js 获取uuid

    admin.guid = function () { function S4() { return (((1+Math.random())*0x10000)|0).toString(16).subst ...

  10. sound of the genuine

    “There is something in every one of you that waits and listens for the sound of the genuine in yours ...