fizord.ru - статьи - 61
[главная] | [каталоги]

0
создан: 2015-11-02 23:36:03
пользователь: cloud раздел: программирование
[17278]
работа с графами C++
изучить работу с графами, написать прогу с ней, красиво оформить курсовую.
Исаков Андрей Алексеевич vk.com/cl0oud

//#include <stdafx.h>
#include <iostream>
using namespace std;
const int n=4; //размер матрицы
int i, j;
//матрица смежности графа
int GM[n][n] = //матрица, GM - название матрицы, количество строк и столбцов [n]
{
{1, 1, 0, 0},
{0, 1, 1, 0},
{0, 0, 1, 1},
{1, 0, 0, 1}
};
//функция поиска в ширину
void BFS(bool *visited, int unit){
     int *queue=new int[n]; //создаёт массив длиной матрицы целочисленных чисел
     int count, head;
     for (i=0; i<n; i++) queue[i]=0;
     count=0; head=0;
     queue[count++]=unit; //передаём значение массива в переменную unit
     visited[unit]=true;
          while (head<count){ // вывод порядка обхода
               unit=queue[head++];
               cout<<unit+1<<" ";
               for (i=0; i<n; i++)
               if (GM[unit][i] && !visited[i]){ //если есть переменная матрицы и visited[i]=false
               queue[count++]=i;
               visited[i]=true;
               }
          }
     delete []queue; //освобождение памяти от массива
}
//главная функция
int main(){
setlocale(LC_ALL, "Rus");
int start; //переменная стартовой вершины
cout<<"стартовая вершина >> "; cin>>start;
bool *visited=new bool[n]; //создаёт массив длиной матрицы когда n истина
cout<<"матрица смежности графа: "<<endl;
     for (i=0; i<n; i++){ //цикл вывода массива в консоли
     visited[i]=false;
     for (j=0; j<n; j++)
     cout<<" "<<GM[i][j];
     cout<<endl;
     }
cout<<"порядок обхода: ";
BFS(visited, start-1); //передаём матрице ...
загрузить
ещё

fizord.ru © 2024