Vlad/README.md
2026-09-15 00:28:59 +05:00

53 lines
2.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Теория конечных графов: Лабораторные работы 1-5
Проект представляет собой библиотеку на C++17 для работы с графами, реализующую фундаментальные алгоритмы.
## Содержание
1. [ЛР1: Структуры данных](#лр1)
2. [ЛР2: MST](#лр2)
3. [ЛР3: Эйлеровы циклы/пути](#лр3)
4. [ЛР4: Паросочетания](#лр4)
5. [ЛР5: Потоки в сетях](#лр5)
<a name="лр1"></a>
## ЛР1: Разработка класса Graph
Реализованы три представления графа:
- **C**: Матрица смежности
- **L**: Списки смежности (`std::set`)
- **E**: Список рёбер
<a name="лр2"></a>
## ЛР2: Остовное дерево минимального веса (MST)
- **Прим** (на базе `std::priority_queue`)
- **Краскал** (DSU)
- **Борувка** (DSU)
<a name="лр3"></a>
## ЛР3: Эйлеровы пути и циклы
- **Алгоритм Флери** (поиск мостов)
- **Алгоритм Иерхольцера** (эффективный O(M) обход)
<a name="лр4"></a>
## ЛР4: Паросочетания
- **Алгоритм Куна** для поиска максимального паросочетания в двудольных графах.
<a name="лр5"></a>
## ЛР5: Потоки в сетях
- **Эдмондс-Карп** (BFS)
- **Диниц** (слоистая сеть)
## Сборка и запуск
### Сборка:
```bash
g++ -std=c++17 -O2 *.cpp -o graph
```
### Запуск:
```bash
./graph [input_file] [output_file]
```
## Формат входных данных
- Первая строка: Тип (C, L, E) и количество вершин (N).
- Вторая строка: Ориентированность (0/1) и Взвешенность (0/1).
- Далее данные согласно выбранному формату.