#include using namespace std; struct node { int num; int color; side* adjvex[7];

}; struct side { int border=0; node* vjex;

}; int main() { node* v[7]; int paint[4] = {1,2,3,4}; // 为每个节点的相邻边分配内存空间 for (int i = 0; i < 7; i++) { v[i] = new node(); v[i]->num = i + 1; for (int j = 0; j < 7; j++) { v[i]->adjvex[j] = new side(); } } // 设置边的连接关系 v[0]->adjvex[0]->border = 0; v[0]->adjvex[1]->border = 1; v[0]->adjvex[1]->vjex = v[1]; v[0]->adjvex[2]->border = 1; v[0]->adjvex[2]->vjex = v[2]; v[0]->adjvex[3]->border = 1; v[0]->adjvex[3]->vjex = v[3]; v[0]->adjvex[4]->border = 1; v[0]->adjvex[4]->vjex = v[4]; v[0]->adjvex[5]->border = 1; v[0]->adjvex[5]->vjex = v[5]; v[0]->adjvex[6]->border = 1; v[0]->adjvex[6]->vjex = v[6]; v[1]->adjvex[0]->border = 1; v[1]->adjvex[0]->vjex = v[0]; v[1]->adjvex[2]->border = 1; v[1]->adjvex[2]->vjex = v[2]; v[2]->adjvex[0]->border = 1; v[2]->adjvex[0]->vjex = v[0]; v[2]->adjvex[1]->border = 1; v[2]->adjvex[1]->vjex = v[1]; v[2]->adjvex[3]->border = 1; v[2]->adjvex[3]->vjex = v[3]; v[2]->adjvex[4]->border = 1; v[2]->adjvex[4]->vjex = v[4]; v[3]->adjvex[0]->border = 1; v[3]->adjvex[0]->vjex = v[0]; v[3]->adjvex[2]->border = 1; v[3]->adjvex[2]->vjex = v[2]; v[3]->adjvex[4]->border = 1; v[3]->adjvex[4]->vjex = v[4]; v[4]->adjvex[0]->border = 1; v[4]->adjvex[0]->vjex = v[0]; v[4]->adjvex[2]->border = 1; v[4]->adjvex[2]->vjex = v[2]; v[4]->adjvex[5]->border = 1; v[4]->adjvex[5]->vjex = v[5]; v[5]->adjvex[0]->border = 1; v[5]->adjvex[0]->vjex = v[0]; v[5]->adjvex[4]->border = 1; v[5]->adjvex[4]->vjex = v[4]; v[6]->adjvex[0]->border = 1; v[6]->adjvex[0]->vjex = v[0];

// 优化后的着色逻辑
for (int i = 0, k = 0; i < 7; i++)
{
	if (v[i]->color != 0) continue; // 如果当前节点已被染色,跳过
	for (int j = 0; j < 7; j++)
	{
		if (v[i]->adjvex[j]->border == 1)
			v[j]->color = paint[k];
		else if (v[i]->adjvex[j]->border == 0 && i != j && v[j]->color == 0)
			v[j]->color = paint[k];
	}
	v[i]->color = paint[k]; // 最后再为当前节点染色
	k = (k + 1) % 4;
}

// 打印每个节点的颜色
for (int i = 0; i < 7; i++) { cout << v[i]->color << " "; }

return 0;

}

C++ 图着色算法代码优化:解决空指针错误并完善染色逻辑

原文地址: https://www.cveoy.top/t/topic/ohvW 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录