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

C++の無向グラフのエッジの数を数えます


与えられたタスクは、無向グラフのエッジの数を数えることです。無向グラフは、すべてのエッジが双方向であるグラフを形成するために互いに接続されている頂点のセットです。無向グラフは、あるノードから別の接続されたノードへと任意の方向に移動できます。

以下は、無向グラフの視覚的表現です。

C++の無向グラフのエッジの数を数えます

ここで、問題に応じて、無向グラフのエッジの数を見つける必要があります。

グラフのエッジは、2つの頂点が結合されている線です。

入力

insert(graph_list, 0, 1);
insert(graph_list, 0, 2);
insert(graph_list, 1, 2);
insert(graph_list, 1, 4);
insert(graph_list, 2, 4);
insert(graph_list, 2, 3);
insert(graph_list, 3, 4);

出力

count of edges are: 7

上記の問題を解決するためのアプローチ-

  • リストを初期化して、グラフのリストのすべての頂点を格納し、それに応じて値を挿入します。

  • 関数count_edgesで、エッジの数を返す変数count=0を宣言します。

  • 最後の頂点に到達するまでループを使用してリストをトラバースし、graph_list [i] .size()を使用してcountの値を追加し、count変数に格納します。

  • 最後の頂点に到達したら、countの値を2で割り、結果を出力します。

#include<bits/stdc++.h>
using namespace std;
//function to insert vertices
void insert(list<int> graph_list[], int u, int v){
   graph_list[u].push_back(v);
   graph_list[v].push_back(u);
}
//function to count the total number of edges
void count_edges(list<int> graph_list[], int v){
   int count=0;
   //traverse the loop till the vertice is found
   for (int i = 0 ; i < v ; i++){
      count += graph_list[i].size();
   }
   count = count/2;
   cout<<"count of edges are: "<<count;
}
int main(int argc, char* argv[]){
   //creating 5 vertices in a graph
   int vertices = 5;
   //declare list to create a graph and pass the vertices
   list<int> graph_list[vertices];
   //call insert function passing the list variable, vertice, linked vertice
   insert(graph_list, 0, 1);
   insert(graph_list, 0, 2);
   insert(graph_list, 1, 2);
   insert(graph_list, 1, 4);
   insert(graph_list, 2, 4);
   insert(graph_list, 2, 3);
   insert(graph_list, 3, 4);
   //calling count function that will count the edges
   count_edges(graph_list, vertices);
   return 0 ;
}

出力

上記のコードを実行すると、次の出力が得られます-

count of edges are: 7

  1. 与えられたグラフのブリッジエッジの数を見つけるためのC++プログラム

    n個の頂点とm個のエッジを含む重み付けされていない無向グラフが与えられたとします。グラフのブリッジエッジは、グラフを削除するとグラフが切断されるエッジです。与えられたグラフでそのようなグラフの数を見つける必要があります。グラフには、平行なエッジや自己ループは含まれていません。 したがって、入力がn =5、m =6、edges ={{1、2}、{1、3}、{2、3}、{2、4}、{2、5}、{3 、5}}の場合、出力は1になります。 グラフには、{2、4}のブリッジエッジが1つだけ含まれています。 これを解決するには、次の手順に従います- mSize := 100 Define an

  2. C++で長方形の正方形の数を数える

    =Bとなるように、長さL、幅Bの長方形が与えられます。目標は、サイズLXBの長方形が収容できる正方形の数を見つけることです。 上の図は、サイズ3 X 2の長方形を示しています。2、2X2の正方形、6,1X1の正方形があります。 総正方形=6+ 2=8。 サイズLXBのすべての長方形には、1X1の正方形のL*B数があります。 最大の正方形のサイズはBXBです。 L =B =1の場合、正方形=1。 L =B =2の場合、正方形=1 + 4 =5(2X2の1、1X1の4) L =B =3の場合、正方形=1 + 4 + 9 =14(3X3の​​1、2X2の4、1