An open API service indexing awesome lists of open source software.

https://github.com/blvxme/vk-internship-task

Поиск кратчайшего расстояния в графе
https://github.com/blvxme/vk-internship-task

cmake cpp

Last synced: over 1 year ago
JSON representation

Поиск кратчайшего расстояния в графе

Awesome Lists containing this project

README

          

# Поиск кратчайшего расстояния в графе

### Задание

Необходимо написать программу на C++, которая будет считать кратчайшее расстояние
от переданной вершины (номер) до всех остальных вершин в ненаправленном графе.
Расстояние до каждой вершины от переданной необходимо вывести на экран.

Структура графа должна считываться из файла. Пример файла `graph.txt`:
```
5
4
0 1
0 4
1 2
1 3
4
```

Файл имеет фиксированную структуру.
- Первая строка - количество вершин графа.
- Вторая строка - количество ребер в графе.
- Далее идут ребра графа ("0 1" означает, что существует путь от вершины с номером
0 до вершины с номером 1).
- Длина каждого ребра равна 1.
- Последняя строка - номер вершины, от которой необходимо посчитать расстояние до
всех остальных.
- Нумерация врешин всегда начинается с нуля.
- Допускаем, что точно существует путь до каждой вершины от каждой.

Вывод для тестовых данных выше:
```
1
2
3
3
0
```

### Использование

- Склонируйте репозиторий (`git clone git@github.com:blvxme/vk-internship-task.git`)
и перейдите склонированный репозиторий (`cd vk-internship-task`).
- Для сборки проекта сначала сгенерируйте конфигурацию для системы сборки
(`cmake -S . -B build -G "Unix Makefiles"`), а затем соберите проект
(`cd build && make && cd ..`).
- Для запуска тестов выполните `./build/test/vk-internship-task-test`
- Для запуска проекта выполните `./build/src/vk-internship-task-exe /path/to/graph.txt`
(в качестве примера графа можно использовать `graph.txt` внутри репозитория).