Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Задача на Java

Михаил Панов Профи (760), закрыт 1 месяц назад
Нужно найти ребра заданного графа, которые принадлежат каждому пути между двумя
заданными вершинами. Какой примерно алгоритм мне нужно реализовать?
Лучший ответ
Денис Настаравичус Профи (732) 2 месяца назад
какие ребра ты чё доктор?
Андрей ПанаринИскусственный Интеллект (253365) 2 месяца назад
Из ребра еще Еву сделали.
ПапаВысший разум (144943) 2 месяца назад
Сейчас он поиграет с тобой в доктора. В проктолога.
Остальные ответы
Рустам Абдрашитов Мудрец (10160) 2 месяца назад
 import java.util.*; 

class Graph {
private final Map> adjList = new HashMap<>();

void addEdge(int src, int dest) {
try {
if (src < 0 || dest < 0) {
throw new IllegalArgumentException("Номера вершин должны быть неотрицательными.");
}
adjList.computeIfAbsent(src, k -> new ArrayList<>()).add(dest);
adjList.computeIfAbsent(dest, k -> new ArrayList<>()).add(src);
} catch (IllegalArgumentException e) {
System.err.println("Ошибка при добавлении ребра: " + e.getMessage());
}
}

Set findBridges(int start, int end) {
Set bridges = new HashSet<>();
try {
if (!adjList.containsKey(start) || !adjList.containsKey(end)) {
throw new NoSuchElementException("Одна из вершин не существует в графе.");
}
} catch (NoSuchElementException e) {
System.err.println("Ошибка при поиске рёбер: " + e.getMessage());
} catch (Exception e) {
System.err.println("Произошла непредвиденная ошибка: " + e.getMessage());
}
return bridges;
}

private Set dfsFindBridges(int current, int end, Set visited) {
return new HashSet<>();
}

public static void main(String[] args) {
Graph graph = new Graph();

graph.addEdge(0, 1);
graph.addEdge(1, 2);

Set bridges = graph.findBridges(0, 2);
System.out.println("Рёбра, принадлежащие каждому пути: " + bridges);
}
}
Похожие вопросы