Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

주어진 고정 차수 시퀀스에 대한 그래프를 생성하는 C++ 프로그램

<시간/>

이것은 C++ 프로그램이 주어진 차수 시퀀스에 대한 무방향 그래프를 나타냅니다. 이 알고리즘의 시간 복잡도는 O(v*v)이며 자체 에지 및 다중 에지를 포함하지 않습니다.

알고리즘

Begin
   To create the graph,
   Create the first loop to connect each vertex ‘i’.
   Create second nested loop to connect the vertex ‘i’ to every valid vertex ‘j’, next to it.
   If the degree of vertex ‘i’ and ‘j’ are more than zero, then connect them.
   Print the adjacency matrix using PrintMatrix().
End

예시 코드

#include<iostream>
#include<iomanip>
using namespace std;
void PrintMatrix(int matrix[][20], int n) {
   int i, j;
   cout<<"\n\n"<<setw(3)<<" ";
   for(i = 0; i < n; i++)
   cout<<setw(3)<<"("<<i+1<<")";
   cout<<"\n\n";
   for(i = 0; i < n; i++) {
      cout<<setw(4)<<"("<<i+1<<")";
      for(j = 0; j < n; j++) {
         cout<<setw(5)<<matrix[i][j];
      }
      cout<<"\n\n";
   }
}
int main() {
   int N, i, j, AdjMat[20][20] = {0};
   cout<<"Enter the number of vertex in the graph: ";
   cin>>N;
   int degseq[N];
   for(i = 0; i < N; i++) {
      cout<<"Enter the degree of "<<i+1<<" vertex: ";
     cin>>degseq[i];
   }
   for(i = 0; i < N; i++) {
      for(j = i+1; j < N; j++) {
         (degseq[i] > 0 && degseq[j] > 0) {
            degseq[i]--;
            degseq[j]--;
            AdjMat[i][j] = 1;
            AdjMat[j][i] = 1;
         }
      }
   }
   PrintMatrix(AdjMat, N);
}

출력

Enter the number of vertexes of the graph: 5
Enter the number of edges of the graph: 4
Enter the vertex pair for edge 1
V(1): 2
V(2): 1
Enter the vertex pair for edge 2
V(1): 3
V(2): 2
Enter the vertex pair for edge 3
V(1): 1
V(2): 1
Enter the vertex pair for edge 4
V(1): 3
V(2): 1
(1) (2) (3) (4) (5)
(1) 0 1 1 1 1
(2) 1 0 0 1 0
(3) 1 0 0 0 0
(4) 1 1 0 0 1
(5) 1 0 0 1 0