图的点着色图T为一个邻接矩阵储存类型的无向图,完成将图的最优着色(将节点储存到二维数组COL[colmax][max]colmax为最多可使用颜色个数
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/18 02:23:03
图的点着色图T为一个邻接矩阵储存类型的无向图,完成将图的最优着色(将节点储存到二维数组COL[colmax][max]colmax为最多可使用颜色个数
图的点着色
图T为一个邻接矩阵储存类型的无向图,完成将图的最优着色(将节点储存到二维数组COL[colmax][max]colmax为最多可使用颜色个数
图的点着色图T为一个邻接矩阵储存类型的无向图,完成将图的最优着色(将节点储存到二维数组COL[colmax][max]colmax为最多可使用颜色个数
#include
#include
#define MAX 20
#define COLnum 10
typedef struct{
\x05char\x05vex[MAX];
\x05int\x05arc[MAX][MAX];
\x05int\x05vexnum,arcnum;
\x05}MGraph;
int GET(MGraph *T,char a)
{ int i=0;
while(T->vex[i]!=a && ivexnum)
{
i++;
}
return i;
}
int CH(MGraph * T,char col[COLnum][MAX],char a,int n)
{ int i=0;
while((col[n][i]!=NULL) &&(T->arc[GET(T,col[n][i])][GET(T,a)]==0))
{
i++;
}
if(col[n][i]==NULL)
{
col[n][i]=a;
return 1;
}
else
return 0;
}
void COLORit(MGraph * T)
{
int i,n;
char col[COLnum][MAX];
for(n=0;nvex[0];
for(i=1;ivexnum;i++)
{
n=0;
while(CH(T,col,T->vex[i],n)==0 && n