问题
源码
#include<iostream>
using namespace std;
const int MAX_N=20;
int arc[MAX_N][MAX_N]= {
{0,1,0,0,0},
{1,0,1,1,0},
{0,1,0,0,1},
{0,1,0,0,1},
{0,0,1,1,0}
};
int color[MAX_N];
int n=5;
int Ok(int i) {
for(int j=0; j<n; j++) {
if(arc[i][j]==1&&color[i]==color[j])
return 0;
}
return 1;
}
int ColorGraph(){
int k=0,flag=1;
while(flag){
k++;
flag=0;
for(int i=0;i<n;i++){
if(!color[i]){
color[i]=k;
if(!Ok(i)){
color[i]=0;
flag=1;
}
}
}
}
return k;
}
int main() {
cout<<"所需颜色种类数为:"<<ColorGraph()<<endl;
return 0;
}