• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
scorpiorax
博客园    首页    新随笔    联系   管理    订阅  订阅
图的M 着色问题

图的M 着色问题(color)

题目描述

给定无向连通图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

****记录下每一个左端点和右端点,排序然后把每一个左端点颜色如果和后端点颜色一样就重新上色。所有点上完色就方法加一,然后他一直输出0。。。我也很绝望哇。

***存储n个顶点的着色方案,可以选择的颜色为1到m

t=1->n

对当前第t个顶点开始着色:

  if:   t>n  则已求得一个解,输出着色方案即可

else:   依次对顶点t着色1-m,

          if:   t与所有其它相邻顶点无颜色冲突,则继续为下一顶点着色;

      else:     回溯,测试下一颜色。

 

 

                                             

posted on 2018-04-05 00:09  scorpiorax  阅读(550)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3