23. Расписание курсов#
| 🎯 Уровень | 🟠 Middle |
| 🔗 Источник | LeetCode 207 — Course Schedule |
| 📊 Сложность | Medium |
| 🏷️ Темы | графы, топологическая сортировка |
📝 Условие#
Есть курсы и зависимости «чтобы пройти A, нужно пройти B». Можно ли пройти все курсы?
Совет
На LeetCode
mainне нужен: данные приходят аргументами метода классаSolution.
Формат ниже — для запуска у себя черезcin/cout.
📥 Входные данные#
В первой строке два числа numCourses и p (1 ≤ numCourses ≤ 2000, 0 ≤ p ≤ 5000). Далее p строк a b — чтобы пройти курс a, нужно сначала пройти курс b. Курсы нумеруются с нуля.
📤 Выходные данные#
true, если можно пройти все курсы, иначе false.
🧪 Тесты#
Тест 1#
Ввод:
2 1
1 0
Вывод:
true
Тест 2#
Ввод:
2 2
1 0
0 1
Вывод:
false
Тест 3#
Ввод:
4 4
1 0
2 1
3 2
3 0
Вывод:
true
Заметка
Оригинальное условие и проверка решения на всех тестах — по ссылке на источник.
💡 Подсказка#
Открыть, если застрял(а) больше чем на 20 минут
Ищите цикл: алгоритм Кана или DFS с цветами.