1. Главная
  2. Библиотека
  3. Программирование
  4. Дан ориентированный граф. Требуется определить, есть ли в нем цикл. Формат входных данных: В первой строке вводится число...

Дан ориентированный граф. Требуется определить, есть ли в нем цикл. Формат входных данных: В первой строке вводится число n - количество вершин и m - количество ребер (1 <= n, m <= 10^5). Далее в m строках следует по 2 числа u, v - вершины графа,

«Дан ориентированный граф. Требуется определить, есть ли в нем цикл. Формат входных данных: В первой строке вводится число n - количество вершин и m - количество ребер (1 <= n, m <= 10^5). Далее в m строках следует по 2 числа u, v - вершины графа,»
  • Программирование

Условие:

Дан ориентированный граф. Требуется определить, есть ли в нем цикл. Обратите внимание на третий тест и подумайте, почему в нем нет цикла.
Формат входных данных
В первой строке вводится число \( n \) - количество вершин и \( m \) - количество ребер. ( \( 1 \leqslant n, m \leqslant 10^{5} \) ). Далее в \( m \) строках следует по 2 числа \( u, v \) - вершины графа, соединенные ребром.
Формат выходных данных
Выведите 0, если в заданном графе нет цикла, и 1 , если он есть.
Примеры
\begin{tabular}{|ll|l|l|}
\hline & стандартный ввод & & стандартный вывод \\
\hline 4 & 4 & 1 & \\
1 & 2 & & \\
2 & 3 & 4 & \\
3 & 4 & & \\
\hline 3 & 2 & 0 \\
1 & 2 & & \\
1 & 3 & & \\
\hline 3 & 3 & & \\
1 & 2 & & \\
2 & 3 & 3 & \\
1 & & \\
\hline
\end{tabular}

Решение:

Для определения наличия цикла в ориентированном графе можно использовать алгоритм обхода в глубину (DFS). Мы будем отслеживать состояние каждой вершины: не посещенная, посещенная и в процессе посещения. Если мы обнаружим вершину, которая уже находится в процессе посещения, это означает, что мы нашли цикл. Вот пример реализации на Python: ```python def has_cycle(graph, n): visited = [0] * n # 0 - не посещена, 1 - в процессе посещения, 2 - посещена def dfs(v): if visited[v] == 1: # Вершина уже в процессе посещения, значит цикл return True if visited[v] ==...

Не нашел нужную задачу?

Воспользуйся поиском

Выбери предмет