Задача A. Остовное дерево

advertisement
Алгоритмы и структуры данных
Лабораторная работа «Покрывающие деревья».
Задача A. Остовное дерево
Имя входного файла:
Имя выходного файла:
Ограничение по времени:
Ограничение по памяти:
spantree.in
spantree.out
2 секунды
64 мегабайта
Даны точки на плоскости, являющиеся вершинами полного графа. Вес ребра равен расстоянию
между точками, соответствующими концам этого ребра. Требуется в этом графе найти остовное
дерево минимального веса.
Формат входного файла
Первая строка входного файла содержит натуральное число n — количество вершин графа
(1 ≤ n ≤ 5000). Каждая из следующих n строк содержит два целых числа xi , yi — координаты i-й вершины (−10 000 ≤ xi , yi ≤ 10 000). Никакие две точки не совпадают.
Формат выходного файла
Первая строка выходного файла должна содержать одно вещественное число — вес минимального остовного дерева.
Примеры
spantree.in
3
0 0
1 0
0 1
spantree.out
2
Страница 1 из 6
Алгоритмы и структуры данных
Лабораторная работа «Покрывающие деревья».
Задача B. Остовное дерево 2
Имя входного файла:
Имя выходного файла:
Ограничение по времени:
Ограничение по памяти:
spantree2.in
spantree2.out
2 секунды
64 мегабайта
Требуется найти в связном графе остовное дерево минимального веса.
Формат входного файла
Первая строка входного файла содержит два натуральных числа n и m — количество вершин
и ребер графа соответственно. Следующие m строк содержат описание ребер по одному на строке.
Ребро номер i описывается тремя натуральными числами bi , ei и wi — номера концов ребра и его
вес соответственно (1 ≤ bi , ei ≤ n, 0 ≤ wi ≤ 100 000). n ≤ 20 000, m ≤ 100 000.
Граф является связным.
Формат выходного файла
Первая строка выходного файла должна содержать одно натуральное число — вес минимального
остовного дерева.
Примеры
spantree2.in
4
1
2
3
4
4
2
3
4
1
spantree2.out
7
1
2
5
4
Страница 2 из 6
Алгоритмы и структуры данных
Лабораторная работа «Покрывающие деревья».
Задача C. Плотное остовное дерево
Имя входного файла:
Имя выходного файла:
Ограничение по времени:
Ограничение по памяти:
mindiff.in
mindiff.out
4 секунды
64 мегабайта
Требуется найти в графе остовное дерево, в котором разница между весом максимального и
минимального ребра минимальна.
Формат входного файла
Первая строка входного файла содержит два натуральных числа n и m — количество вершин
и ребер графа соответственно. Следующие m строк содержат описание ребер по одному на строке.
Ребро номер i описывается тремя натуральными числами bi , ei и wi — номера концов ребра и его
вес соответственно (1 ≤ bi , ei ≤ n, 0 ≤ |wi | ≤ 109 ). n ≤ 1000, m ≤ 10 000.
Формат выходного файла
Если остовное дерево существует, выведите в первой строке выходного файла YES, а во второй
строке одно целое число — минимальную разность между весом максимального и минимального
ребра в остовном дереве.
В противном случае в единственной строке выведите NO.
Примеры
mindiff.in
4
1
1
1
3
3
5
2
3
4
2
4
1
2
1
2
2
mindiff.out
YES
0
Страница 3 из 6
Алгоритмы и структуры данных
Лабораторная работа «Покрывающие деревья».
Задача D. Эйлеров путь
Имя входного файла:
Имя выходного файла:
Ограничение по времени:
Ограничение по памяти:
euler.in
euler.out
2 секунды
64 мегабайта
Дан неориентированный связный граф, не более трех вершин имеет нечетную степень. Требуется
определить, существует ли в нем путь, проходящий по всем ребрам.
Формат входного файла
Первая строка входного файла содержит натуральное число n — количество вершин графа
(1 ≤ n ≤ 1 000). Далее следуют n строк, задающих ребра. В i-ой из этих строк находится число
mi — количество ребер, инцидентных вершине i. Далее следуют mi натуральных чисел — номера
вершин, в которые идет j-ое ребро из i-ой вершины.
Граф может содержать кратные ребра, но не содержит петель.
Формат выходного файла
Если решение существует, то в первую строку выходного файла выведите одно число k — количество ребер в искомом маршруте, а во вторую k + 1 число — номера вершин в порядке их посещения.
Если решений нет, выведите в выходной файл одно число -1.
Если решений несколько, выведите любое.
Примеры
euler.in
4
2
4
2
2
2
1
2
3
2
4 3 1
4
2
euler.out
5
1 2 3 4 2 1
Страница 4 из 6
Алгоритмы и структуры данных
Лабораторная работа «Покрывающие деревья».
Задача E. Алгоритм двух китайцев
Имя входного файла:
Имя выходного файла:
Ограничение по времени:
Ограничение по памяти:
chinese.in
chinese.out
4 секунды
256 мегабайт
Дан ориентированный взвешенный граф. Покрывающим деревом с корнем в вершине u назовем
множество ребер, таких что из вершины u достижима любая другая вершина v, притом единственным образом. Весом дерева назовем сумму весов его ребер.
Требуется определить, существует ли в данном графе покрыващее дерево с корнем в вершине с
номером 1. В случае существование требуется определить его минимальный вес.
Формат входного файла
В первой строке входного файла два числа: n и m (2 ≤ n ≤ 1000, 1 ≤ m ≤ 10000), где n —
количество вершин графа, а m — количество ребер.
Следующие m строк содержат описание ребер. Каждое ребро задается стартовой вершиной,
конечной вершиной и весом ребра. Вес каждого ребра — целое число, не превосходящее по модулю
109 .
Формат выходного файла
Если покрывающее дерево существует, выведите в первой строке выходного файла YES, а во
второй строке целое число — его минимальный вес. В противном случае в единственной строке
выведите NO.
Примеры
chinese.in
2
2
4
1
1
1
2
2
1
1
5
2
3
4
3
4
chinese.out
NO
10
2
3
3
2
2
YES
6
Страница 5 из 6
Алгоритмы и структуры данных
Лабораторная работа «Покрывающие деревья».
Задача F. Crossroads
Имя входного файла:
Имя выходного файла:
Ограничение по времени:
Ограничение по памяти:
planaritycheck.in
planaritycheck.out
2 секунды
64 мегабайта
Ведущий байтландский производитель автомобилей — компания «<CDR Cars>» — планирует
строительство нового завода. Завод будет состоять из n цехов. Некоторые цеха планируется соединить дорогами с двусторонним движением, причём любые два цеха планируется соединить не более,
чем одной дорогой. Руководство «<CDR Cars>» интересует, можно ли расположить цеха и дороги
таким образом, чтобы любые две дороги пересекались только в случае, если они выходят из одного
цеха (и только в точке, соответствующей этому цеху).
Заметим, что дороги не обязаны быть прямолинейными.
Формат входного файла
В первой строке содержится целое число t (1 ≤ t ≤ 500) — количество тестовых примеров.
В каждой из следующей строк описано расположение цехов и дорог. Пусть у нас есть n цехов
символов ‘0’ или ‘1’, обозначающих наличие (1)
(1 ≤ N ≤ 6). Тогда описание состоит из n(n−1)
2
или отсутствие (0) дорог между цехами 1 и 2, 1 и 3, 2 и 3, 1 и 4 и так далее (если использовать
термины теории графов, то задаётся нижний тругольник матрицы смежности, выписанный слитно
построчно).
Формат выходного файла
Для каждого тестового примера выведите «YES», если цеха можно расположить так, чтобы
никакие две дороги не пересекались во внутренних точках, и «NO» в противном случае.
Примеры
planaritycheck.in
3
1111111111
000111111011100
111111
planaritycheck.out
NO
NO
YES
Страница 6 из 6
Download