TGViewer
Поступашки - Информатика Поступашки - Информатика @postupashki_prog · 1.75K subscribers
Post #112 5.87K
Здравствуйте, камрады😎

Сегодня у нас на разборе топологическая сортировка. Алгос, который может быть полезен при решении задач на графы.

Идея
Если коротко: у нас есть ориентированный граф, и нам нужен такой порядок вершин, чтобы все рёбра шли из более ранней вершины в более позднюю.
Другими словами, чтобы никакая задача не “опережала” свою зависимость.

Особенности
Граф с циклом не сортируется
Как ни расставляй вершины массива, по ребрам цикла невозможно идти строго “вправо”.

Ациклический граф всегда можно отсортировать
В нём всегда есть вершина без исходящих рёбер — её можно поставить последней.
Убираем такие вершины по одной, пока граф не пуст — получаем массив, который потом разворачиваем.

Реализация
Реализация проще через DFS:
Выходим из вершины, у которой нет новых исходящих рёбер;
Продолжаем из тех вершин, исходящие ребра которых ведут только в уже посещённые вершины.
Записываем вершины в порядке выхода из DFS и разворачиваем массив — получаем корректную топологическую сортировку.

const int maxn = 1e5;
bool used[maxn];
vector<int> t;

void dfs(int v) {
used[v] = true;
for (int u : g[v])
if (!used[u])
dfs(u);
t.push_back(v);
}

void topological_sort() {
for (int v = 0; v < n; v++)
if (!used[v])
dfs(v);
reverse(t.begin(), t.end());
}

Применение
Топологическую сортировку можно использовать для проверки достижимости
Если вершина a идёт позже вершины b в массиве — значит, из a до b достичь нельзя.
Однако обратное не гарантируется — a может быть достижима из b или нет.

Задачки
Course Schedule
Course Schedule II
Longest Increasing Path in a Matrix
Sort Items by Groups Respecting Dependencies
Maximum Employees To Be Invited To A Meeting

Ещё больше разборов и подборок задач на нашей 3х месячной олимпиадной смене по информатике

@postupashki_prog
More from @postupashki_prog
  1. Sep 30, 2026Здравствуйте, камрады 😎 Сегодня прокачанная версия бинпоиска по ответу — параллельный бин…
  2. Sep 27, 2026Олимпиады по информатике 2026/27: сколько теперь реально стоит диплом Здравствуйте, камрад…
  3. Sep 21, 2026💻 Камрады, а вы знали, что БВИ на программную инженерию можно было получить по экономике?…
  4. Sep 7, 2026Здравствуйте, товарищи😎 Сегодня разбираем один из самых частотных приёмов - бинарный поис…
  5. Jul 7, 2026Появился новый бот со шпаргалками и бесплатными материалами для подготовки к ОГЭ и ЕГЭ 😱…
  6. Jul 6, 2026Convex Hull Trick Сегодня обсудим одну из самых краисвых техник в алгоритмическом программ…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →