dfs (13 ноября 2013)
- Повторим хранение графа
- int count[N][N], weight[N][N]
- vector c[N], w[N]
- int head[N]; edge e[E];
- Пути (совсем простая часть)
- Путь из v в a
- Путь из v в A
- Путь из A в v
- Рекурсия (учимся жить без стека)
- Stack: замеряем память [код]
- Изучаем настройки компилятора/операционной системе (python, java, c++)
- Учимся обходиться без stack-а: dfs, который ищет путь, на stack, на queue
- Полноценный dfs без использования стандартного стека.
- Двусвязность и сильная связность (на это уйдет много времени) [код]
- Ориентированный граф, сильная связность, ориентация графа
- Компоненты реберной двусвязности и мосты [код]
- Компоненты вершинной двусвязности и точки сочленения
- Тестирование мостов [slow] [gen] [cmd]
- Классные задачки на dfs
- Покраска графа в два цвета
- Разбиение графа на две клики
- У каждой вершины 3 врага, разбить на две доли так, чтобы у каждой вершины в ее доли было не более 1 врага
- Покраска дверей: каждое ребро дверь, с одной стороны красная, с другой зеленая. Нужно, чтобы в каждой вершине разница была не больше 1.
- Ориентация графа: нужно ориентировать граф так, чтобы максимальная исходящая степень была минимальна