贪心法C++ 图着色问题

这篇博客探讨了如何使用贪心算法在C++中解决无向连通图的着色问题。通过实例代码展示如何为图的每个顶点分配颜色,确保每条边连接的两个顶点颜色不同。关键步骤包括初始化颜色数组、贪心选择未着色顶点并检查相邻顶点颜色冲突。
摘要由CSDN通过智能技术生成

**

贪心法C++

图着色问题
**

描述:给定无向连通图G和m种不同的颜色。用这些颜色为图G的各顶点着色,每个顶点着一种颜色。是否有一种着色法使G中每条边的2个顶点着不同颜色。

代码如下所示:

int color[n] = {0};
int arc[n][n];
void ColorGraph()
{
	int k = 0;
	int flag = 1;
	while (flag == 1)
	{
		k++; flag = 0;
		for (int i = 0; i < n; i++)
		{
			if (color[i] == 0)
			{
				color[i] = k;
				if (!ok(i))
				{
					color[i] = 0;
					flag = 1;
				}	
			}
		}
	}
}

int ok (int i)
{
	for (int j = 0; j < n; j++)
		if (arc[i][j] == 1 && color[i] == color[j]) return 0;
	return 1;
}
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值