C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

支配集合問題を解決するためのC++プログラム


これは、支配集合問題を解決するためのC++プログラムです。

アルゴリズム

Begin
   Take the number of vertices and edges as input. Also take the edge point of the edges.
   function dominant():
      Declare vector Set.
      Take any edge e graph connecting the vertices i.e.; X and Y.
      Add one vertex between X and Y to set s.
      Delete all the edges connected to X.
End

#include<bits/stdc++.h>
using namespace std;
vector<vector<int> > g;
bool visit[10001];
int i,j;
vector<int> dominant(int v,int e) {
   vector<int> Set;
   //Take any edge e graph connecting the vertices i.e.; X and Y.
   for(i=0;i<v;i++) {
      if(!visit[i]) {
         Set.push_back(i); //Add vertex
         visit[i]=true;
         for(j=0;j<(int)g[i].size();j++) {
            if(!visit[g[i][j]]) {
               visit[g[i][j]]=true;
               break;
            }
         }
      }
   }
   return Set;
}
int main() {
   int v,e,a,b;
   cout<<"Enter number of vertices:";
   cin>>v;
   cout<<"Enter number of Edges:";
   cin>>e;
   g.resize(v);
   memset(visit,0,sizeof(visit)); //set all index value of an array as 0
   for(i=0;i<e;i++) {
      cout<<"Enter the end-points of edge "<<i+1<<" : ";
      cin>>a>>b;
      a--; b--;
      g[a].push_back(b);
      g[b].push_back(a);
   }
   vector<int> Set = dominant(v,e);
   cout<<"The Dominant Set is:\n";
   for(i=0;i<(int)Set.size();i++)
      cout<<Set[i]+1<<" ";
   return 0;
}

出力

Enter number of vertices:7
Enter number of Edges:6
Enter the end-points of edge 1 : 1 2
Enter the end-points of edge 2 : 2 2
Enter the end-points of edge 3 : 3 4
Enter the end-points of edge 4 : 4 5
Enter the end-points of edge 5 : 6 7
Enter the end-points of edge 6 : 4 5
The Dominant Set is:
1 3 5 6

  1. シェーカーソートを実行するC++プログラム

    シェーカーソートは、指定されたデータをソートするために使用されます。シェーカーソートは、バブルソートとは異なり、配列を両方向に並べ替えます。このアルゴリズムの最悪の複雑さはO(n ^ 2)です。 アルゴリズム Begin    ShakerSort() function has ‘arr’ the array of data and ‘n’ the number of values, in the argument list.    // Implement Sorting algorithm using

  2. 動的計画法を使用してナップサック問題を解決するC++プログラム

    これは、動的計画法を使用して0-1ナップサック問題を解決するC++プログラムです。 0-1ナップサック問題では、それぞれに重みと値を持つアイテムのセットが与えられます。合計重量が指定された制限以下になり、合計値が可能な限り大きくなるように、コレクションに含める各アイテムの数を決定する必要があります。 アルゴリズム Begin Input set of items each with a weight and a value Set knapsack capacity Create a function that returns maximum of two integers. Create a