执行贪婪着色的 C++ 程序

这是一个执行贪婪着色的 C++程序

算法:

Begin

   Take the number of vertices and edges as input.

   Create function greedyColoring() to assign color to vertices:

   A) Assign the first color to first vertex.

   B) Initialize the remaining vertices.

   C) Declare a temporary array to store the available colors.

   D) Assign color to the remaining vertices.

   Print the solution.

End

示例代码

#include<bits/stdc++.h>

#include<iostream>

using namespace std;

int n,e,i,j;

vector<vector<int> > g;

vector<int> col;

bool visit[1001];

void greedyColoring()

{

   col[0] = 0;

   for (i=1;i<n;i++)

   col[i] = -1;

   bool unuse[n];

   for (i=0;i<n;i++)

   unuse[i]=0;

   for (i = 1; i < n; i++)

   {

      for (j=0;j<g[i].size();j++)

      if (col[g[i][j]] != -1)

      unuse[col[g[i][j]]] = true;

      int cr;

      for (cr=0;cr<n;cr++)

         if (unuse[cr] == false)

      break;

      col[i] = cr;

      for (j=0;j<g[i].size();j++)

      if (col[g[i][j]] != -1)

      unuse[col[g[i][j]]] = false;

   }

}

int main()

{

   int a,b;

   cout<<"分别输入顶点数和边数:";

   cin>>n>>e;

   cout<<"\n";

   g.resize(n);

   col.resize(n);

   memset(visit,0,sizeof(visit));

   for(i=0;i<e;i++)

   {

      cout<<"\nEnter edge vertices of edge "<<i+1<<" :";

      cin>>a>>b;

      a--; b--;

      g[a].push_back(b);

      g[b].push_back(a);

   }

   greedyColoring();

   for(i=0;i<n;i++)

   {

      cout<<"Vertex "<<i+1<<" is coloured with "<<col[i]+1<<"\n";

   }

}

输出结果
分别输入顶点数和边数:7

6

Enter edge vertices of edge 1 :4 5

Enter edge vertices of edge 2 :2 3

Enter edge vertices of edge 3 :1 1

Enter edge vertices of edge 4 :1 4

Enter edge vertices of edge 5 :6 7

Enter edge vertices of edge 6 :2 2

Vertex 1 is coloured with 1

Vertex 2 is coloured with 1

Vertex 3 is coloured with 2

Vertex 4 is coloured with 2

Vertex 5 is coloured with 1

Vertex 6 is coloured with 1

Vertex 7 is coloured with 2

以上是 执行贪婪着色的 C++ 程序 的全部内容, 来源链接: utcz.com/z/359801.html

回到顶部