**
贪心法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;
}