Приоритетная очередь не добавляет в очередь правильные данные ⇐ JAVA
Приоритетная очередь не добавляет в очередь правильные данные
Я пытаюсь решить проблему, используя очередь приоритетов, где у меня есть двумерный массив times, где индексы во втором измерении представляют
[*]начальный край, [*]конечный край и [*]расстояние между двумя краями
Также указывается край, с которого нужно начать, как целое число k.
Я попробовал решить, используя графовый алгоритм Дейкстры.
Поскольку в приведенном ниже коде начальный узел равен 2, Я добавляю значения [3,7] и [1,2] в очередь приоритетов, но при опросе значений я получаю [1,7] и [3,7]. Однако для некоторых других входных данных он работает правильно.
Ввод:
int times[][] = {{1,2,1},{2,3,7},{1,3,4},{2,1,2}}; int n = 3, k = 2; Код:
import java.util.ArrayList; импортировать java.util.Arrays; импортировать java.util.PriorityQueue; класс ПараДанные { внутренний узел; инт Вэй; public PairData (int node, int wei) { this.node = узел; this.wei = Вэй; } } общественный класс NetworkDelayTime { public int networkDelayTime(int[][] times, int n, int k) { ArrayList adj= new ArrayList(); for(int i=0;i
Я пытаюсь решить проблему, используя очередь приоритетов, где у меня есть двумерный массив times, где индексы во втором измерении представляют
[*]начальный край, [*]конечный край и [*]расстояние между двумя краями
Также указывается край, с которого нужно начать, как целое число k.
Я попробовал решить, используя графовый алгоритм Дейкстры.
Поскольку в приведенном ниже коде начальный узел равен 2, Я добавляю значения [3,7] и [1,2] в очередь приоритетов, но при опросе значений я получаю [1,7] и [3,7]. Однако для некоторых других входных данных он работает правильно.
Ввод:
int times[][] = {{1,2,1},{2,3,7},{1,3,4},{2,1,2}}; int n = 3, k = 2; Код:
import java.util.ArrayList; импортировать java.util.Arrays; импортировать java.util.PriorityQueue; класс ПараДанные { внутренний узел; инт Вэй; public PairData (int node, int wei) { this.node = узел; this.wei = Вэй; } } общественный класс NetworkDelayTime { public int networkDelayTime(int[][] times, int n, int k) { ArrayList adj= new ArrayList(); for(int i=0;i
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение