SHAOXIAOJ正在加载中...

2633: 回溯法-图的m着色问题

金币值:3 定数:8 时间限制:1.000 s 内存限制:128 M
正确:3 提交:3 正确率:100.00% 命题人:
点赞量:0 收藏量:0 题目类型:程序 知识点: 算法设计

题目描述

已知某无向图的顶点数为n,边数见输入时提供的邻接矩阵(n行n列),1<=n<=10。如果给定m种不同的颜色,问有多少种不同的可行着色方案(可行的着色方案要求图中任何相邻的顶点不能着相同的颜色)?

测试代码   复制

#include<stdio.h>
#include<string.h>

int n;  //图中节点的个数
int m;  //给定的颜色种类,编号从1到m
int sum=0;//保存可以着色的方案数

int x[11];//xi记录第i个顶点着的颜色编号
int a[11][11]; //表示图的邻接矩阵

int OK(int i) { //检验第i个顶点着的颜色是否与前i-1个顶点的着色有冲突
	
}

void backtrack(int i) {
	if(i>n) {
		sum++;
	} else {
		
	}
}

int main(void) {
	int i,j;
	scanf("%d %d",&n,&m);
	for(i=1;i<=n;i++){
		for(j=1;j<=n;j++){
			scanf("%d",&a[i][j]);
		}
	}
	backtrack(1);
	printf("%d\n",sum);
	return 0;
}

输入格式

第一行输入两个整数,分别表示图中的顶点数n和给定的颜色数m
第2行到第n+1行每行输入n个0或1的整数序列(每两个整数之间用一个空格隔开),表示该图对应的邻接矩阵

输出格式

第n+2行输出不同的着色方案数量

输入样例    复制

3 2
0 1  1
1 0  0
1 0  0

输出样例    复制

2