回溯--深度优先搜索(图的M着色问题 poj1129)
来源:互联网 发布:类似于记事本的软件 编辑:程序博客网 时间:2024/05/02 04:39
【回溯】图的m着色问题
题目描述
给定无向连通图G=(V, E)和m种不同的颜色,用这些颜色为图G的各顶点着色,每个顶点着一种颜色。是否有一种着色法使G中相邻的两个顶点有不同的颜色?
这个问题是图的m可着色判定问题。若一个图最少需要m种颜色才能使图中每条边连接的两个顶点着不同颜色,则称这个数m为该图的色数。求一个图的色数m的问题称为图的m可着色优化问题。
编程计算:给定图G=(V, E)和m种不同的颜色,找出所有不同的着色法和着色总数。
输入
第一行是顶点的个数n(2≤n≤10),颜色数m(1≤m≤n)。
接下来是顶点之间的相互关系:a b
表示a和b相邻。当a,b同时为0时表示输入结束。
输出
输出所有的着色方案,表示某个顶点涂某种颜色号,每个数字的后面有一个空格。最后一行是着色方案总数。
样例输入
5 41 31 21 42 32 42 53 44 50 0
样例输出
1 2 3 4 1 1 2 3 4 3 1 2 4 3 1 1 2 4 3 4 1 3 2 4 1 1 3 2 4 2 1 3 4 2 1 1 3 4 2 4 1 4 2 3 1 1 4 2 3 2 1 4 3 2 1 1 4 3 2 3 2 1 3 4 2 2 1 3 4 3 2 1 4 3 2 2 1 4 3 4 2 3 1 4 1 2 3 1 4 2 2 3 4 1 2 2 3 4 1 4 2 4 1 3 1 2 4 1 3 2 2 4 3 1 2 2 4 3 1 3 3 1 2 4 2 3 1 2 4 3 3 1 4 2 3 3 1 4 2 4 3 2 1 4 1 3 2 1 4 3 3 2 4 1 3 3 2 4 1 4 3 4 1 2 1 3 4 1 2 3 3 4 2 1 2 3 4 2 1 3 4 1 2 3 2 4 1 2 3 4 4 1 3 2 3 4 1 3 2 4 4 2 1 3 1 4 2 1 3 4 4 2 3 1 3 4 2 3 1 4 4 3 1 2 1 4 3 1 2 4 4 3 2 1 2 4 3 2 1 4 Total=48
#include <iostream>#define NUM 12using namespace std;int N,M;//顶点个数和颜色数;int Graph[NUM][NUM];//存放图的结构;int color[NUM];//所图的颜色;int CaseNo = 0;bool ok(int k){ for(int j = 1;j<=N;j++) if(Graph[j][k]==1&&color[k]==color[j]) return false; //是他的邻接顶点并且邻接顶点的颜色和自己的颜色相同,返回false; return true;}void DFS(int v){ if(v>N){ for(int i = 1;i<=N;i++)//依次输出涂的颜色 cout <<color[i]<<" "; CaseNo++;//涂的方法数+1; cout <<endl; return ; } else{ for(int i = 1;i<=M;i++){//访问每一种涂法方法; color[v] = i;//涂上颜色; if(ok(v))//是否满足涂的规则; DFS(v+1);//如果满足,进行下一个顶点的涂色; color[v] = 0;//回溯 } }}int main(){ cin>>N>>M; int a,b; while(cin>>a>>b&&a&&b){ Graph[a][b] = Graph[b][a] = 1; }//输入; DFS(1); cout <<"Total="<<CaseNo<<endl; return 0;}
阅读全文
0 0
- 回溯--深度优先搜索(图的M着色问题 poj1129)
- 图的m着色问题(回溯)
- 回溯算法----图的M着色问题
- 图的m着色问题-回溯法
- 图的m着色(回溯法)
- 图的m着色问题(回溯法-满m叉树)
- poj1129 m着色
- c++实现回溯算法解决图的M着色问题
- 算法java实现--回溯法--图的m着色问题
- NOJ(1575)-回溯算法-图的m着色问题
- 回溯经典-m图着色问题
- m着色问题(回溯算法)
- 回溯经典-m图着色问题(和地图4色问题的区别)
- 回溯--深度优先搜索(数字n的组合数)
- 回溯--深度优先搜索(01背包)
- POJ1129 Channel Allocation(点着色问题)
- hud1010回溯深度优先搜索
- 回溯法--深度优先搜索
- Android 7.1 GUI系统-BufferQueue 的管理(三)
- 强化学习相关资料
- Educational Codeforces Round 33 (Rated for Div. 2) 题解
- 洛谷p1754
- 极验滑动验证码geetest.6.0.1破解
- 回溯--深度优先搜索(图的M着色问题 poj1129)
- 服务监控Zabbix和Nagios的继任者
- RecyclerView 多选+仿IOS卸载时的图标抖动
- Linux 计划任务 crontab 从 nano 转换为 vim
- python基础学习
- 【Spring-data-jpa】根据userName模糊查询
- 关于php缓存与header
- 蓝桥杯 算法提高 三进制数位和(Java解题)
- 文件File