Advertisement
AmirVagapov

Graph

Apr 9th, 2023
711
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.49 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. int main() {
  4.     int **M, i, j, n, m, k, a, t, q, r;
  5.     printf( "Введите количество вершин:\n");
  6.     scanf("%d", &n);
  7.     int P[n], V[n];
  8.     M = new int*[n];
  9.     for (i = 0; i < n; i++) {
  10.         M[i] = new int[n];
  11.         for (j = 0; j < n; j++) M[i][j]=0;
  12.     }
  13.     printf( "Введите количество дуг:\n");
  14.     scanf("%d", &m);
  15.     for (k = 0; k < m; k++) {
  16.         scanf("%d%d", &i, &j);
  17.         M[i][j] = 1; M[j][i] = 1;
  18.     }
  19.     printf("\n");
  20.     scanf("%d", &a);
  21.    
  22.     P[0] = a; r = 0; t = 0; //очередь из одной вершины a
  23.     for (i = 0; i < n; i++) V[i] = 0;
  24.     V[a] = 1; //уровень для вершины a
  25.     while (t <= r){
  26.         k = P[t]; q = V[k]+1;
  27.         for (i = 0; i < n; i++)
  28.         if ((V[i] == 0) && (M[k][i] == 1)){
  29.             V[j] = q; r++; P[r] = j;
  30.         }
  31.         t++;
  32.     }
  33. }
  34.  
  35. /*Какова трудоемкость этого алгоритма для графа из n вершин и m ребер?
  36. Трудоемкость задания графа в виде матрицы смежности имеет порядок O(n2), так как m ≤ n.
  37. А программа просмотра вширь графа из n вершин, заданного в виде матрицы смежности M имеет трудоёмкость имеет порядок O(n2).
  38. То есть, алгоритм имеет трудоемкость O(n2).*/
  39.  
  40.  
  41.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement