64,639
社区成员
发帖
与我相关
我的任务
分享
int GColor(int E[n+1][n+1])//顶点编号和下标对应,从1开始
{
int i,j,k=1;
int color[n+1];//每个顶点的着色情况
color[1]=1;
for(i=2;i<=n;i++)
color[i]=0;
do{
for(i=2;i<=n;i++){
if(color[i]>0)continue;
for(j=1;j<i;j++)
if((color[j]==k)&&E[i][j])
break; //E[i][j]表示边<i,j>相邻
if(j==i)color[i]=k;
}
j=2;
while((color[j]>0)&&(j<=n))j++;
k++; //对所有不相邻的节点着色后,色数加1
}while(j<=n)
return k-1;
}