图的M着色问题

#include<iostream>

using namespace::std;

int **neighbor;
int t,c;//t is the amounts of node,and c is the kinds of color
int workable=0;
int *color;

void input();
void dye(int i);
int main()
{
 input();
 dye(0);
 cout<<workable<<endl;
 return 0;
}

void input()
{
 cin>>t>>c;
 neighbor=new int*[t];
 color=new int[t];
 for(int i=0;i<t;i++)
 {
  neighbor[i]=new int[t];
  for(int j=0;j<t;j++)
  {
   cin>>neighbor[i][j];
  }
 }
}
void output()
{
 for(int i=0;i<t-1;i++)
 {
  cout<<color[i]<<" ";
 }
 cout<<color[t-1]<<"/n";
}
void dye(int i)
{
 if(i==t)
 {
  output();
  workable++;
 }
 else
 {
  for(int brush=1;brush<=c;brush++)
  {
   int j=0;
   for(;j<i;j++)
   {
    if(neighbor[j][i]==1&&color[j]==brush)break; 
   }
   if(j!=i)continue;
   else
   {
    color[i]=brush;
    dye(i+1);
   }
  }
 }
}

你可能感兴趣的:(c,input,output)