{"id":16466976,"url":"https://github.com/nitvex/data_structures_and_algorithms","last_synced_at":"2026-06-13T15:35:58.696Z","repository":{"id":124898319,"uuid":"211170794","full_name":"Nitvex/data_structures_and_algorithms","owner":"Nitvex","description":null,"archived":false,"fork":false,"pushed_at":"2019-09-26T20:50:37.000Z","size":20691,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-28T02:25:16.098Z","etag":null,"topics":["algorithms","cij","data-structures","data-structures-algorithms","graphs"],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Nitvex.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-09-26T19:55:42.000Z","updated_at":"2021-10-14T08:10:06.000Z","dependencies_parsed_at":null,"dependency_job_id":"f3c3b4dc-6838-4c05-9af5-2a6fa814b918","html_url":"https://github.com/Nitvex/data_structures_and_algorithms","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Nitvex/data_structures_and_algorithms","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nitvex%2Fdata_structures_and_algorithms","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nitvex%2Fdata_structures_and_algorithms/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nitvex%2Fdata_structures_and_algorithms/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nitvex%2Fdata_structures_and_algorithms/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Nitvex","download_url":"https://codeload.github.com/Nitvex/data_structures_and_algorithms/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nitvex%2Fdata_structures_and_algorithms/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34290346,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-13T02:00:06.617Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["algorithms","cij","data-structures","data-structures-algorithms","graphs"],"created_at":"2024-10-11T11:45:24.290Z","updated_at":"2026-06-13T15:35:58.684Z","avatar_url":"https://github.com/Nitvex.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# [ИТМО] Курс по структурам данных и алгоритмам\n\n##### Лабораторная 1:  Основные определения и поиск в ширину.\n   \n   \u003e Задача А. От списка ребер к матрице смежности. Простой ориентированный граф задан списком ребер, выведите его представление в виде матрицы смежности\n\n   \u003e Задача B. Проверка на неориентированность. По заданной квадратной матрице NxN из нулей и единиц, определите может ли данная матрица быть матрицей смежности простого неориентированного графа.\n\n   \u003e Задача C. Проверка на наличие параллельных ребер, неориентированный граф. Неориентированный граф задан списком ребер. Проверьте, содержит ли он параллельные ребра.\n\n   \u003e Задача D. Компоненты связности. Дан неориентированный граф. Требуется выделить компоненты связности в нем. Подсказка: для решения задачи можно воспользоваться поиском в ширину или поиском в глубину.\n\n   \u003e Задача E. Кратчайший путь в невзвешенном графе. Дан неориентированный невзвешенный граф. Найдите кратчайшее расстояние от первой вершины до всех вершин.\n\n   \u003e Задача F. Лабиринт. Лабиринт представляет собой поле NxM. По некоторым его клеткам ходить можно, а по некоторым - нет. Узник находится в одной из клеток лабиринта и может перемещаться за ход на одну из четерех соседних клеток. Помогите ему дойти до выхода за минимальное число шаов или сообщите, что выйти невозможно.\n##### Лабораторная 2: Поиск в глубину.\n   \u003e Задача А. Топологическая сортировка. Дан ориентированный невзвешенный граф. Необходимо его топологически отсортировать.\n\n   \u003e Задача B. Поиск цикла. Дан ориентированный невзвешенный граф. Необходимо определить есть ли в нем циклы, и если есть, то вывести любой из них.\n\n   \u003e Задача С. Двудольный граф. Двудольным называется неориентированный граф {V,E}, вершины которого можно разбить на два множества L и R, так что LnR=пустое множество, LuR=V и для любого ребра (u,v) принадлежит E, либо u принадлежит L, v принадлежит R, либо v принадлежит L, u принадлежит R.\n\n   \u003e Задача D. Конденсация графа. Дан ориентированный невзвешенный граф. Необходимо выделить в нем компоненты сильной связности и топологически их отсортировать.\n\n   \u003e Задача E. Гамильтонов путь. Дан ориентированный граф без циклов. Требуется проверить, существует ли в нем путь, проходящий по всем вершинам.\n\n   \u003e Задача F. Игра. Дан ориентированный невзвешенный ациклический граф. На одной из вершин графа стоит \"фишка\". Двое играют в игру. Пусть \"фишка\" находится в вершине u, и в графе есть ребро (u,v). Тогда за ход разрешается перевести \"фишку\" из вершины u в вершину v. Проигрывает тот, кто не может сделать ход.\n##### Лабораторная 3: Минимальные остовные деревья. \n   \u003e Задача А. Степени вершин. Неориентированный граф задан списком ребер. Найдите степени всех вершин графа.\n\n   \u003e Задача B. Остовное дерево. Даны точки на плоскости, являющиеся вершинами полного графа. Вес ребра равен расстоянию между точками, соответствующими концам этого ребра. Требуется в этом графе найти остовное дерево минимального веса.\n\n   \u003e Задача С. Остовное дерево. Требуется найти в связном графе остовное дерево минимального веса.\n\n   \u003e Задача D. Алгоритм двух китайцев. Дан ориентированный взвешенный граф. Покрывающим деревом с корнем в вершине u назовем множество ребер, таких что из вершины u достижима любая другая вершина v, притом единственным образом. Весом дерева назовем сумму его ребер. Требуется определить, существует ли в данном графе покрывающее дерево с корнем в вершине с номером 1. В случае существования требуется определить его минимальный вес.\n\n   ##### Лабораторная 4: Кратчайшие пути в графах.\n\n   \u003e Задача А. Кратчайший путь. Дан ориентированный взвешенный граф. Найдите кратчайшее расстояние от одной заданной вершины до другой.\n\n   \u003e Задача B. Кратчайший путь от каждой вершины до каждой. Задан ориентированный взвешенный связный граф. Найдите матрицу расстояний между его вершинами.\n\n   \u003e Задача С. Кратчайший путь. Дан неориентированный взвешенный граф. Найдите кратчайшее расстояние от первой вершины до всех вершин.\n\n   \u003e Задача D. Кратчайшие пути и прочее. Дан взвешенный ориентированный граф и вершина s в нем. Требуется для каждой вершины u найти длину кратчайшего пути из s в u.\n\n   \u003e Задача E. Цикл отрицательного веса. Дан ориентированный взвешенный граф. Определить, есть ли в нем цикл отрицательного веса, и если да, то вывести его.\n\n   ##### Лабораторная 5: Потоки в графах.\n\n   \u003e Задача А. Максимальный поток. Задан ориентированный граф, каждое ребро которого обладает целочисленной пропускной способностью. Найдите максимальный поток из вершины с номером 1 в вершину с номером n.\n\n   \u003e Задача B. Паросочетание. Дан двудольный невзвешенный граф. Необходимо найти максимальное паросочетание.\n\n   \u003e Задача С. Декомпозиция потока. Задан ориентированный граф, каждое ребро которого обладает целочисленной пропускной способностью. Найдите максимальный поток из вершины с номером 1 в вершину с номером n и постройте декомпозицию потока.\n\n   \u003e Задача D. Циркуляция. Назовем циркуляцией поток величины 0. Дан ориентированный граф с нижними и верхними пропускными способностями, то есть для любых вершин i и j должно быть верно, что Lij \u003c= Fij \u003c= Cij, где Lij - нижняя граница, а Cij - верхняя. Требуется найти циркуляцию в данном графе, удовлетворяющую данным ограничениям.\n\n##### Лабораторная 6: Поиск подстрок.\n\u003e Задача А. Наивный поиск подстроки в строке. Даны строки p и t. Требутеся найти все вхождения строки p в строку t в качестве подстроки.\n\n\u003e Задача B. Наивный поиск подстроки в строке. Даны строки p и t. Требутеся найти все вхождения строки p в строку t в качестве подстроки.\n\n\u003e Задача С. Префикс-функция. Постройте префикс-функцию для заданной строки s.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnitvex%2Fdata_structures_and_algorithms","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnitvex%2Fdata_structures_and_algorithms","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnitvex%2Fdata_structures_and_algorithms/lists"}