Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- int main() {
- int **M, i, j, n, m, k, a, t, q, r;
- printf( "Введите количество вершин:\n");
- scanf("%d", &n);
- int P[n], V[n];
- M = new int*[n];
- for (i = 0; i < n; i++) {
- M[i] = new int[n];
- for (j = 0; j < n; j++) M[i][j]=0;
- }
- printf( "Введите количество дуг:\n");
- scanf("%d", &m);
- for (k = 0; k < m; k++) {
- scanf("%d%d", &i, &j);
- M[i][j] = 1; M[j][i] = 1;
- }
- printf("\n");
- scanf("%d", &a);
- P[0] = a; r = 0; t = 0; //очередь из одной вершины a
- for (i = 0; i < n; i++) V[i] = 0;
- V[a] = 1; //уровень для вершины a
- while (t <= r){
- k = P[t]; q = V[k]+1;
- for (i = 0; i < n; i++)
- if ((V[i] == 0) && (M[k][i] == 1)){
- V[j] = q; r++; P[r] = j;
- }
- t++;
- }
- }
- /*Какова трудоемкость этого алгоритма для графа из n вершин и m ребер?
- Трудоемкость задания графа в виде матрицы смежности имеет порядок O(n2), так как m ≤ n.
- А программа просмотра вширь графа из n вершин, заданного в виде матрицы смежности M имеет трудоёмкость имеет порядок O(n2).
- То есть, алгоритм имеет трудоемкость O(n2).*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement