Олимпиадное программирование в УлГТУ
Олимпиадное программирование в УлГТУ
  • 47
  • 198 624
Отрицательные циклы: проверка существования, вывод, пометка вершин, до которых нет кратчайшего пути
Это вторая, обновлённая версия видео, в которой рассмотрена проблема с выводом отрицательного цикла при помощи алгоритма Флойда (с 19:32).
Старая версия: ua-cam.com/video/LnOOuNcRLIo/v-deo.html
Плейлист по кратчайшим путям в графах: ua-cam.com/play/PLGhUJWLZ8uQ4EWdQwVyUFnz82kbeGRP97.html
Это видео записывалось как часть онлайн-курса, которому, увы, уже не суждено увидеть свет. Тем не менее, мы опубликуем его материалы, так как они могут оказаться полезными при изучении соответствующих тем.
Переглядів: 488

Відео

Идея алгоритма Флойда-Уоршелла
Переглядів 2,3 тис.Місяць тому
Это вторая, обновлённая версия видео, в которой исправлены опечатки на слайдах. Старая версия: ua-cam.com/video/kaA3_qNfpCA/v-deo.html Плейлист по кратчайшим путям в графах: ua-cam.com/play/PLGhUJWLZ8uQ4EWdQwVyUFnz82kbeGRP97.html Это видео записывалось как часть онлайн-курса, которому, увы, уже не суждено увидеть свет. Тем не менее, мы опубликуем его материалы, так как они могут оказаться полез...
Отрицательные циклы: почему они усложняют поиск кратчайших путей в графах
Переглядів 1,2 тис.Рік тому
Плейлист по кратчайшим путям в графах: ua-cam.com/play/PLGhUJWLZ8uQ4EWdQwVyUFnz82kbeGRP97.html Это видео записывалось как часть онлайн-курса, которому, увы, уже не суждено увидеть свет. Тем не менее, мы опубликуем его материалы, так как они могут оказаться полезными при изучении соответствующих тем.
Алгоритмы Флойда-Уоршелла и Джонсона
Переглядів 3,1 тис.Рік тому
Плейлист по кратчайшим путям в графах: ua-cam.com/play/PLGhUJWLZ8uQ4EWdQwVyUFnz82kbeGRP97.html Это видео записывалось как часть онлайн-курса, которому, увы, уже не суждено увидеть свет. Тем не менее, мы опубликуем его материалы, так как они могут оказаться полезными при изучении соответствующих тем.
Кратчайшие пути в ациклических ориентированных графах
Переглядів 1,6 тис.Рік тому
Плейлист по кратчайшим путям в графах: ua-cam.com/play/PLGhUJWLZ8uQ4EWdQwVyUFnz82kbeGRP97.html Это видео записывалось как часть онлайн-курса, которому, увы, уже не суждено увидеть свет. Тем не менее, мы опубликуем его материалы, так как они могут оказаться полезными при изучении соответствующих тем.
Алгоритм Форда-Беллмана и SPFA
Переглядів 9 тис.Рік тому
Плейлист по кратчайшим путям в графах: ua-cam.com/play/PLGhUJWLZ8uQ4EWdQwVyUFnz82kbeGRP97.html Это видео записывалось как часть онлайн-курса, которому, увы, уже не суждено увидеть свет. Тем не менее, мы опубликуем его материалы, так как они могут оказаться полезными при изучении соответствующих тем.
Отрицательные веса рёбер: почему алгоритм Дейкстры с ними не справляется
Переглядів 1,5 тис.Рік тому
Плейлист по кратчайшим путям в графах: ua-cam.com/play/PLGhUJWLZ8uQ4EWdQwVyUFnz82kbeGRP97.html Это видео записывалось как часть онлайн-курса, которому, увы, уже не суждено увидеть свет. Тем не менее, мы опубликуем его материалы, так как они могут оказаться полезными при изучении соответствующих тем.
Алгоритм Дейкстры: два варианта реализации
Переглядів 10 тис.Рік тому
Плейлист по кратчайшим путям в графах: ua-cam.com/play/PLGhUJWLZ8uQ4EWdQwVyUFnz82kbeGRP97.html Это видео записывалось как часть онлайн-курса, которому, увы, уже не суждено увидеть свет. Тем не менее, мы опубликуем его материалы, так как они могут оказаться полезными при изучении соответствующих тем.
Идея алгоритма Дейкстры
Переглядів 9 тис.Рік тому
Плейлист по кратчайшим путям в графах: ua-cam.com/play/PLGhUJWLZ8uQ4EWdQwVyUFnz82kbeGRP97.html Это видео записывалось как часть онлайн-курса, которому, увы, уже не суждено увидеть свет. Тем не менее, мы опубликуем его материалы, так как они могут оказаться полезными при изучении соответствующих тем.
Задачи на поиск в ширину: вершины и рёбра на кратчайших путях, неочевидные графы
Переглядів 1,9 тис.Рік тому
Плейлист по кратчайшим путям в графах: ua-cam.com/play/PLGhUJWLZ8uQ4EWdQwVyUFnz82kbeGRP97.html Это видео записывалось как часть онлайн-курса, которому, увы, уже не суждено увидеть свет. Тем не менее, мы опубликуем его материалы, так как они могут оказаться полезными при изучении соответствующих тем.
Задачи на поиск в ширину: лабиринты, BFS из нескольких стартовых вершин, 0-1-BFS
Переглядів 4,3 тис.Рік тому
Плейлист по кратчайшим путям в графах: ua-cam.com/play/PLGhUJWLZ8uQ4EWdQwVyUFnz82kbeGRP97.html Это видео записывалось как часть онлайн-курса, которому, увы, уже не суждено увидеть свет. Тем не менее, мы опубликуем его материалы, так как они могут оказаться полезными при изучении соответствующих тем.
Поиск в ширину (BFS)
Переглядів 23 тис.Рік тому
Плейлист по кратчайшим путям в графах: ua-cam.com/play/PLGhUJWLZ8uQ4EWdQwVyUFnz82kbeGRP97.html Это видео записывалось как часть онлайн-курса, которому, увы, уже не суждено увидеть свет. Тем не менее, мы опубликуем его материалы, так как они могут оказаться полезными при изучении соответствующих тем.
Очередь с приоритетами: эффективное построение двоичной кучи, сортировка кучей
Переглядів 1,7 тис.Рік тому
Плейлист по последовательным структурам данных: ua-cam.com/play/PLGhUJWLZ8uQ4PVZ5sIyiJy8EQduBKEqRN.html Это видео записывалось как часть онлайн-курса, которому, увы, уже не суждено увидеть свет. Тем не менее, мы опубликуем его материалы, так как они могут оказаться полезными при изучении соответствующих тем.
Очередь с приоритетами: реализация на двоичной куче
Переглядів 3,3 тис.Рік тому
Плейлист по последовательным структурам данных: ua-cam.com/play/PLGhUJWLZ8uQ4PVZ5sIyiJy8EQduBKEqRN.html Это видео записывалось как часть онлайн-курса, которому, увы, уже не суждено увидеть свет. Тем не менее, мы опубликуем его материалы, так как они могут оказаться полезными при изучении соответствующих тем.
Очередь и дек: варианты реализации, очередь с минимумом
Переглядів 2,1 тис.Рік тому
Плейлист по последовательным структурам данных: ua-cam.com/play/PLGhUJWLZ8uQ4PVZ5sIyiJy8EQduBKEqRN.html Это видео записывалось как часть онлайн-курса, которому, увы, уже не суждено увидеть свет. Тем не менее, мы опубликуем его материалы, так как они могут оказаться полезными при изучении соответствующих тем.
Стек: ближайший больший элемент, стек с минимумом, стек в рекурсии
Переглядів 555Рік тому
Стек: ближайший больший элемент, стек с минимумом, стек в рекурсии
Стек: реализация на массиве и списке, скобочные последовательности, постфиксная нотация
Переглядів 1,3 тис.Рік тому
Стек: реализация на массиве и списке, скобочные последовательности, постфиксная нотация
Двусвязный список
Переглядів 2,1 тис.Рік тому
Двусвязный список
Односвязный список
Переглядів 3,8 тис.Рік тому
Односвязный список
Расширяющийся массив: неправильные и правильные подходы к реализации
Переглядів 558Рік тому
Расширяющийся массив: неправильные и правильные подходы к реализации
Массив
Переглядів 1,6 тис.Рік тому
Массив
Поиск компонент сильной связности в графе. Алгоритм Косараджу
Переглядів 7 тис.Рік тому
Поиск компонент сильной связности в графе. Алгоритм Косараджу
Топологическая сортировка графа
Переглядів 9 тис.Рік тому
Топологическая сортировка графа
Поиск циклов в неориентированном графе. Двудольность
Переглядів 4 тис.Рік тому
Поиск циклов в неориентированном графе. Двудольность
Поиск циклов в ориентированном графе. Восстановление цикла
Переглядів 7 тис.Рік тому
Поиск циклов в ориентированном графе. Восстановление цикла
Поиск компонент связности в неявном графе. DFS на графе-сетке
Переглядів 2,6 тис.Рік тому
Поиск компонент связности в неявном графе. DFS на графе-сетке
Поиск компонент связности в графе. Раскраска компонент связности
Переглядів 6 тис.Рік тому
Поиск компонент связности в графе. Раскраска компонент связности
Поиск в глубину (DFS)
Переглядів 16 тис.Рік тому
Поиск в глубину (DFS)
Способы представления графов: список рёбер, матрица смежности, списки смежности
Переглядів 9 тис.Рік тому
Способы представления графов: список рёбер, матрица смежности, списки смежности
Графы. Свойства графов
Переглядів 10 тис.Рік тому
Графы. Свойства графов

КОМЕНТАРІ

  • @nekoie6150
    @nekoie6150 2 дні тому

    спасибо вам огромное!!

  • @RedFeuer.
    @RedFeuer. 3 дні тому

    Спасибо!

  • @user-iw7zo9vm8o
    @user-iw7zo9vm8o 3 дні тому

    круто!

  • @adventureswithstan1026
    @adventureswithstan1026 7 днів тому

    Спасибо, очено помогли,единственный нормально объяснение на ютубе

  • @tusman4ik
    @tusman4ik 8 днів тому

    А стоит ли на олимпиаде этим заниматься? Я про тестинг автоматический.. Ведь время жмет.

    • @op_ulstu
      @op_ulstu 8 днів тому

      На последних часах пятичасовых соревнований нередко есть выбор между поиском ошибки в решении одной задачи или написанием с нуля решения другой задачи. Стресс-тестирование в такой ситуации может очень сильно помочь. Кроме того, есть форматы соревнований, когда решения отправляются «втёмную» (то есть итоговый вердикт становится известен только после окончания). В этом случае стресс-тестирование просто незаменимо.

  • @adventureswithstan1026
    @adventureswithstan1026 9 днів тому

    Идеальный канал,спасибо

  • @antonnesterov8711
    @antonnesterov8711 11 днів тому

    3:10 - почему сдвинули R на 40, а не на 43?

    • @op_ulstu
      @op_ulstu 11 днів тому

      Спасибо за наблюдательность, здесь на слайдах ошибка. Правильная последовательность шагов при поиске элемента 33: L = 0, R = 19, M = 9; A[M] > 33, смещаем R на M - 1 L = 0, R = 8, M = 4; A[M] < 33, смещаем L на M + 1 L = 5, R = 8, M = 6; A[M] > 33, смещаем R на M - 1 L = 5, R = 5, M = 5; A[M] < 33, смещаем L на M + 1 L = 6, R = 5; индексы зашли друг за друга, следовательно, элемента 33 в массиве нет.

    • @antonnesterov8711
      @antonnesterov8711 11 днів тому

      @@op_ulstu понял, большое спасибо за уточнение! И за курс в целом - он отличный!

  • @quirenceh4ndeir156
    @quirenceh4ndeir156 17 днів тому

    Легенда. Спасибо. Добавьте еще дополнительные задачи про мосты и точки сочленения, все люди, грокающие графы, будут благодарны

  • @ducbyk8169
    @ducbyk8169 22 дні тому

    Большое вам спасибо за наглядные примеры и код.

  • @user-vf7xz3kd9h
    @user-vf7xz3kd9h 27 днів тому

    Найс

  • @user-vf7xz3kd9h
    @user-vf7xz3kd9h 28 днів тому

    Нааааайс

  • @user-vf7xz3kd9h
    @user-vf7xz3kd9h Місяць тому

    Топ

  • @lobiritus1512
    @lobiritus1512 Місяць тому

    Спасибо за такое понятное и подробное объяснение!

  • @aveok1
    @aveok1 Місяць тому

    Спасибо вам болшое

  • @user-vf7xz3kd9h
    @user-vf7xz3kd9h Місяць тому

    Огонь 🔥

  • @Bibliophilos
    @Bibliophilos Місяць тому

    Коммент в поддержку канала, большое дело делает автор.

  • @Bibliophilos
    @Bibliophilos Місяць тому

    Спасибо огромное за видео! Пожалуйста, объясните для чайника, когда мы пишем l = m+1, r = m - 1; а когда просто приравниваем m? Первый случай только для поиска конкретного элемента?

    • @op_ulstu
      @op_ulstu Місяць тому

      Мы начали с такого примера и такого решения потому, что для начинающих зрителей они являются более понятными и естественными. Далее мы придём к более общему решению. Задача, которая решается при помощи бинпоиска, чаще состоит не в том, чтобы найти какое-то заданное значение, а в том, чтобы найти первый или последний элемент, обладающий определённым свойством. Для таких задач уже проще запомнить общее решение, когда цикл while идёт до 2 элементов, а l и r всегда смещаются на m (без +1/-1). Подробнее об этом рассказано в следующем видео: ua-cam.com/video/_u2yypDA6R0/v-deo.html Когда нужен поиск заданного значения в массиве, его можно выполнять так, как показано здесь, но можно воспользоваться и вышеупомянутой общей схемой, например, искать первый элемент, который больше или равен заданному значению (цикл while в этом случае идёт до 2 элементов, l и r смещаются на m).

    • @Bibliophilos
      @Bibliophilos Місяць тому

      @@op_ulstu благодарю! Вы один из топовых авторов по объяснению алгоритмов.

  • @lekopin1783
    @lekopin1783 Місяць тому

    Спасибо большое! Отличный урок!

  • @Bibliophilos
    @Bibliophilos Місяць тому

    Спасибо за все видео, очень доступно объясняете, пожалуйста, не останавливайтесь, если есть такая возможность:)

  • @user-vf7xz3kd9h
    @user-vf7xz3kd9h Місяць тому

    Матреца смежнасти лутшая

  • @front-rud
    @front-rud Місяць тому

    Я вообще не понимал как устроен этот алгоритм и другие, пока не начал смотреть ваши видосы. Все просто разжеванно, спасибо большое !

  • @hackernet1408
    @hackernet1408 Місяць тому

    Здравствуйте ! Будут ли лекции по парсочам , строкам ? Планируется ли регулярное выкладывание видео ? . Хочу поблагодарить вас за ваш большой труд, вы помогаете довольно многим людям, студентам. Хороший интерактивный формат (коротко по делу, с упоминанием нюансов, приложения). Также хотел спросить есть ли конспекты по этим видео ?

  • @pashaxd7337
    @pashaxd7337 Місяць тому

    Лучший канал по алгоритмам и структурам данным на русскоязычном пространстве.

  • @203-ve8hk
    @203-ve8hk Місяць тому

    😨😓💩🤡👌🏿🤛🏿💁🏿

  • @macbeth143
    @macbeth143 Місяць тому

    thank you so much, do you have anything related to number theory or math for cp in general ?

  • @FaxWeb7
    @FaxWeb7 Місяць тому

    Прям вовремя видос выпустили, я как раз сейчас этот алгоритм изучаю. Было бы классно увидеть ролики о динамическом программировании на вашем канале, очень хорошо объясняете, только вот просмотров мало(

  • @user-zw3rq6ij2n
    @user-zw3rq6ij2n Місяць тому

    Это слишком хорошо

  • @huseynscratchprogram2438
    @huseynscratchprogram2438 Місяць тому

    Здравствуйте я написал этот же код но результат немного иной выходит вот результат:45 40 65 75 X 65 40 0 30 X 50 60 35 100 X А вот код: //Dijkstra algorithm with an array #include <bits/stdc++.h> using namespace std; const int INF=1e9; vector<int> Dijkstra(int start,vector<vector<pair<int,int>>> graph) { vector<int> dist(graph.size(),INF); vector<bool> visited(graph.size()); dist[start]=0; for(int i=0;i<graph.size();i++) { int nearest=-1; for(int v=0;v<graph.size();v++) if(!visited[v] && (nearest==-1 || dist[nearest]>dist[v])) nearest=v; visited[nearest]=true; for(auto &[to,weight] : graph[nearest]) if(dist[to]>dist[nearest]+weight) dist[to]=dist[nearest]+weight; } return dist; } int main() { int VertexCount,EdgeCount; cin>>VertexCount>>EdgeCount; vector<vector<pair<int,int>>> graph(VertexCount); for(int i=0;i<EdgeCount;i++) { int a,b,weight; cin>>a>>b>>weight; graph[a].push_back({b,weight}); graph[b].push_back({a,weight}); } int start; cin>>start; vector<int> dist=Dijkstra(start,graph); for(int i=0;i<dist.size();i++) { if(dist[i]!=INF) cout<<dist[i]<<" "; else cout<<"X "; } }

  • @macbeth143
    @macbeth143 Місяць тому

    how can i start CP

  • @OrionKropt
    @OrionKropt Місяць тому

    Мего харош Просто лучший

  • @borsuk7617
    @borsuk7617 Місяць тому

    Где я могу найти код из урока?

    • @op_ulstu
      @op_ulstu Місяць тому

      acm.khpnets.info/wiki/Алгоритм_Флойда

  • @huseynscratchprogram2438
    @huseynscratchprogram2438 Місяць тому

    Здравствуйте вы онлайн уроки проводите для олимпиады?

    • @op_ulstu
      @op_ulstu Місяць тому

      Здравствуйте. Увы, нет.

  • @aveok1
    @aveok1 Місяць тому

    Ты топ

  • @klausvreinherz7145
    @klausvreinherz7145 Місяць тому

    у вас звезда амперсанд в аргументе сплита - это бан на полчаса

    • @op_ulstu
      @op_ulstu Місяць тому

      Что именно вас смутило? a и b в split() - это указатели на вершины результирующих деревьев, они имеют тип Node *. Это выходные параметры, мы хотим изменять их внутри split, поэтому передаём их по ссылке: Node *&. Если хотите, можете возвращать из split пару указателей: pair<Node *, Node *> split(Node *n, int key).

    • @klausvreinherz7145
      @klausvreinherz7145 Місяць тому

      @@op_ulstu это некоторый мем с лабораторных работ по C в моём универе, если подойти с таким на сдачу лабы, то вас не будут принимать следующие полчаса, так как в си такая конструкция не имеет смысла. Если говорить о том что меня смутило в этом видеоролике, то мне и словами не описать ту боль которую мне пришлось пережить чтобы понять как дерево на самом деле работает, то как вы объяснили на визуализации конечно складно и понятно, но код так не работает, (я говорю о ф-ии split). Возможно этого поверхностного "понимания" достаточно чтобы использовать такой подход как инструмент в олимпиадных задачах и далеко не всем хочется знать как обстоят дела на самом деле

    • @op_ulstu
      @op_ulstu Місяць тому

      @@klausvreinherz7145 Код в видео написан на C++, а не на C. Здесь & - это не операция взятия адреса (в объявлении типа эта операция всё равно не имела бы смысла), а признак ссылки. В показанном коде *& - не две взаимообратные операции, а ссылка на указатель.

    • @klausvreinherz7145
      @klausvreinherz7145 Місяць тому

      @@op_ulstuпоэтому я и упомянул что лабораторные мы писали на си

    • @klausvreinherz7145
      @klausvreinherz7145 Місяць тому

      @@op_ulstu так как этот мем был несколько неуместен, но всё же достойным упоминания в обществе моих одногрупников, с коими я и пытался смотреть ваше видео

  • @user-tr8xi3ik3c
    @user-tr8xi3ik3c Місяць тому

    огромное спасибо за объяснение и за проделанную работу!

  • @pechinkin
    @pechinkin 2 місяці тому

    очень хороший мини-курс, очень! спасибо. и анимация приятная, когда от одного к другому переходит. интересно, как это сделано всё разжёвано в нужной степени, вкусно)

  • @user-sf9fd8up5b
    @user-sf9fd8up5b 2 місяці тому

    великолепно )

  • @user-do3zm3vp2f
    @user-do3zm3vp2f 2 місяці тому

    Как же шикарно автор объясняет. Я прям кайфую от объяснений автора.

  • @user-nt7lj6eu6b
    @user-nt7lj6eu6b 2 місяці тому

    Спасибо за видео. Возник вопрос, почему есть утверждение, что при использовании матрицы смежности асимптотика алгоритма равняется O(V**2), - я понимаю вашу логику, что проверок условий действительно будет больше, но ведь самих запусков dfs - столько же, ведь у нас в условии IF фигуририрует visited, который мы обновляем на предыдущуих вызовах рекурсии

    • @op_ulstu
      @op_ulstu 2 місяці тому

      Проверка, существует ли ребро между вершинами a и b, - не бесплатная операция. Представьте себе запуск DFS на пустом графе из 1000 вершин. Если граф был сохранён в виде списков смежности, то после запуска DFS от каждой вершины мы сразу делаем вывод, что у неё нет соседей, так как соответствующий список смежности пуст; в цикл for мы даже не входим. Итого O(1) на обработку каждой вершины и общая сложность O(V) для запусков от всех вершин. Если граф был сохранён в виде матрицы смежности, после запуска от любой вершины алгоритму придётся просмотреть 1000 ячеек соответствующей строки матрицы, чтобы понять, что там всюду нули и соседних вершин нет. Итого O(V) на обработку каждой вершины и общая сложность O(V^2).

  • @user-vf7xz3kd9h
    @user-vf7xz3kd9h 2 місяці тому

    А 8адачу с сасудами можно решить с помощи дп

  • @onlyc583
    @onlyc583 2 місяці тому

    Большое спасибо за урок! Очень просто и понятно объяснили как работает декартово дерево, как балансируется и как его писать

  • @user-dz6hn8vk9w
    @user-dz6hn8vk9w 3 місяці тому

    Лучшее видео!

  • @MartinIden-hn7ld
    @MartinIden-hn7ld 3 місяці тому

    Огромное спасибо за видео

  • @user-do3zm3vp2f
    @user-do3zm3vp2f 3 місяці тому

    Как же автор все круто объяснил. Я физически ощутил как поумнел и вспомнил множество задач где можно было бы использовать бинарный поиск предварительно отсортировав коллекцию любой сортировкой с той же логарифмической сложностью.

  • @z3sker467
    @z3sker467 3 місяці тому

    лучший канал, спасибо огромное❤

  • @michaelbom1100
    @michaelbom1100 3 місяці тому

    Большое спасибо за видео! Очень понятно и доступно!

  • @beworld_pasha
    @beworld_pasha 3 місяці тому

    В общем, это буквально ИДЕАЛЬНЫЙ канал, чтоб заботать алгоритмы к интервью. Спасибо огромное!

  • @beworld_pasha
    @beworld_pasha 3 місяці тому

    Попалась задача данного типа в Я.Контесте, отличное видео, спасибо!)

  • @vidruska
    @vidruska 3 місяці тому

    Спасибо за видео! Можно ли с помощью Дейкстры найти все кратчайшие пути? То есть у нас могут быть более чем один "path"? Или надо использовать другой алгоритм?

    • @op_ulstu
      @op_ulstu 3 місяці тому

      Ответ на ваш вопрос - чуть далее по плейлисту, в видеозаписях про алгоритм Флойда-Уоршелла.

    • @vidruska
      @vidruska 3 місяці тому

      @@op_ulstu Я неправильно наверно выразилась - алгоритм Floyd ищет все кратчайшие пути попарно, но у меня всё-таки задачи более похоже на алгоритмДейкстры. То есть мне нужно найти все возможные пути от Start до Finish, где Start и Finish фиксированной… В отличие от видео нужно распечатать все пути от Start до Finish если их несколько. Надо структуру from дополнить? Или другой алгоритм искать?

    • @op_ulstu
      @op_ulstu 3 місяці тому

      @@vidruska Вы можете попробовать сделать вектор from двумерным, чтобы в ячейке с индексом to сохранять не одного, а сразу всех возможных предков вершины to на каком-то кратчайшем пути (добавится условие else if (dist[to] == dist[nearest] + weight) from[to].push_back(nearest); ). Затем вам придётся написать рекурсивную функцию, перебирающую все возможные пути от finish до start по этому массиву. Правда, имейте в виду, что количество кратчайших путей между start и finish в графе может быть экспоненциальным, и в общем случае вывести их все не получится. Рассмотрите, например, граф: 7 12 1 2 100 1 2 100 2 3 100 2 3 100 3 4 100 3 4 100 4 5 100 4 5 100 5 6 100 5 6 100 6 7 100 6 7 100 Даже в этом маленьком графе между вершинами 1 и 7 есть 64 различных кратчайших пути.