Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Diskret / Graf / main

.cpp
Скачиваний:
5
Добавлен:
18.08.2019
Размер:
2.18 Кб
Скачать
#include <iostream>
using namespace std;

int main()
{  int *Label; // объявляем массив меток
   int *FIFO; // объявляем СД очередь
   int i,j,k,p,cur;
   int Start, Finish, N, M;

int Graf[6][6] = {{0,0,0,1,1,0},
                  {0,0,1,0,1,0},
                  {0,1,0,1,1,1},
                  {1,0,1,0,0,0},
                  {1,1,1,0,0,1},//N = 6 M = 8
                  {0,0,1,0,1,0}};
/*
int Graf[6][6] = {{0,1,0,0,1,0},
                  {0,0,1,0,1,0},
                  {0,1,0,1,0,1},
                  {1,0,1,0,0,0},
                  {0,0,1,0,0,1},
                  {0,0,1,0,1,0}};//M = 9*/
/*
int Graf[9][9] = {{0,1,0,1,0,0,1,0,0},
                  {0,0,1,0,1,0,0,0,0},
                  {0,1,0,1,0,0,0,0,1},
                  {1,0,0,0,0,0,0,0,0},
                  {0,1,0,0,0,1,1,0,0},
                  {0,0,0,0,1,0,0,0,0},
                  {0,0,0,0,1,0,1,0,0},
                  {0,0,0,0,0,0,0,1,0},//N = 9
                  {0,0,0,0,1,0,0,1,0}};//M = 13*/

N = 6;// количество вершин в графе N
M = 8;// количество ребер в графе M
cout << "Input start point" << endl;
cin >> Start;

Label= new int [N];
FIFO= new int [N];

for(i=0;i<M;i++){FIFO[i]=0;Label[i]=9;}
p=0; // указатель на начало очереди
k=1; // указатель на конец очереди

FIFO[p]=Start;// заносим стартовую вершину обхода в очередь
Label[Start]=0;  // и помечаем ее меткой 0

while (p!=k) {
 cur=FIFO[p]; // выбираем 1-ый элемент в очереди и
 p++;
for(i=0;i<N;i++)
{
    if(Graf[cur][i]==1 && Label[i]>Label[cur]+1)
    {
        for(j=0;j<N;j++) cout << Label[j] << " " ; cout << "Label ";
        for(j=0;j<N;j++) cout << FIFO [j] << " " ; cout << "FIFO " << endl;
        FIFO[k]=i; // выделяем очередную вершину из очереди
        k++;  //  сдвигаем указатель начала на 1
        Label[i] = Label[cur]+1; //помечаем вершину

    }
}
}
for(j=0;j<N;j++) cout << Label[j] << " " ; cout << "Label ";
for(j=0;j<N;j++) cout << FIFO [j] << " " ; cout << "FIFO " << endl;

cout << "Input point of destination" << endl;
cin >> Finish;
cout << "Distance to the vertex: " << Label[Finish] << endl;

cin.get();
return 0;
}


Соседние файлы в папке Graf
  • #
    18.08.20191.1 Кб5Graf.cbp
  • #
    18.08.201998 б6Graf.depend
  • #
    18.08.2019322 б5Graf.layout
  • #
    18.08.20192.18 Кб5main.cpp