贪心法之着色问题

来源:互联网 发布:战地1画面优化 编辑:程序博客网 时间:2024/05/20 22:36
// 0522.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <iostream>using namespace std;#define n 5static int arc[100][100];static color[100];int Ok(int i){for(int j=0; j<n; j++)if(arc[i][j]==1 && color[i]==color[j])return 0;return 1;}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 main(){cout<<"输入颜色的个数:";      int m;      cin>>m;        cout<<"输入无向图点和边的关系:"<<endl;      for(int i=0; i<n; i++)          for(int j=0; j<n; j++)          {              int a;              cin>>a;              arc[i][j]=a;          }        ColorGraph();  for(i=0; i<n; i++){cout<<color[i]<<" ";}cout<<endl;return 0;}

就是一种颜色挨个顶点确定是不是可以着色,把每种颜色用到极致