A. Максимальный поток
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
maxflow.in
вывод
maxflow.out

Задан ориентированный граф, каждое ребро которого обладает целочисленной пропускной способностью. Найдите максимальный поток из вершины с номером 1 в вершину с номером n.

Входные данные

Первая строка входного файла содержит n и m — количество вершин и количество ребер графа (2 ≤ n ≤ 100, 1 ≤ m ≤ 1000). Следующие m строк содержат по три числа: номера вершин, которые соединяет соответствующее ребро графа и его пропускную способность. Пропускные способности не превосходят 105.

Выходные данные

В выходной файл выведите одно число — величину максимального потока из вершины с номером 1 в вершину с номером n.

Примеры тестов

Входные данные
4 5
1 2 1
1 3 2
3 2 1
2 4 2
3 4 1
Выходные данные
3

B. Максимальный поток
ограничение по времени на тест
0.5 секунда
ограничение по памяти на тест
256 мегабайт
ввод
flow2.in
вывод
flow2.out

Задан ориентированный граф, каждое ребро которого обладает целочисленной пропускной способностью. Найдите максимальный поток из вершины с номером 1 в вершину с номером n.

Входные данные

Первая строка входного файла содержит n и m — число вершин и ребер в графе (2 ≤ n ≤ 500, 1 ≤ m ≤ 10 000). Последующие строки описывают ребра. Каждое ребро задается тремя числами: начальная вершина ребра, конечная вершина ребра и пропускная способность ребра. Пропускные способности не превосходят 109.

Выходные данные

Выведите величину максимального потока между вершинами 1 и n.

Примеры тестов

Входные данные
4 5
1 2 1
1 3 2
3 2 1
2 4 2
3 4 1
Выходные данные
3

C. Декомпозиция потока
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
decomposition.in
вывод
decomposition.out

Задан ориентированный граф, каждое ребро которого обладает целочисленной пропускной способностью. Найдите максимальный поток из вершины с номером 1 в вершину с номером n и постройте декомпозицию этого потока.

Входные данные

Первая строка входного файла содержит n и m — количество вершин и количество ребер графа (2 ≤ n ≤ 500, 1 ≤ m ≤ 10000). Следующие m строк содержат по три числа: номера вершин, которые соединяет соответствующее ребро графа и его пропускную способность. Пропускные способности не превосходят 109.

Выходные данные

В первую строку выходного файла выведите одно число — количество путей в декомпозции максимального потока из вершины с номером 1 в вершину с номером n. Следующий строки должны содержать описания элементарых потоков, на который был разбит максимальный. Описание следует выводить в следующем формате: величина потока, количество ребер в пути, вдоль которого течет данный поток и номера ребер в этом пути. Ребра нумеруются с единицы в порядке появления во входном файле.

Примеры тестов

Входные данные
4 5
1 2 1
1 3 2
3 2 1
2 4 2
3 4 1
Выходные данные
3
1 2 1 4
1 3 2 3 4
1 2 2 5

D. Чокнутый профессор
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
matan.in
вывод
matan.out

В Университете города М. проводят эксперимент. Преподаватели сами решают, что они будут читать в рамках того или иного курса. И вот преподаватель математического анализа (в простонародье — матана) оценил по некоторым критериям все известные ему темы в данном курсе. В результате этой ревизии каждой теме сопоставлено некоторое целое число (возможно, отрицательное) — полезность данной темы. Профессор хочет максимизировать суммарную полезность прочитанных им тем, но не все так просто. Для того что бы студенты поняли некоторые темы, необходимо, чтобы были прочитаны так же некоторые другие темы, так как некоторые доказательства базируются на фактах из других тем. Однако если существует цикл из зависимостей тем, то их все можно прочитать, и на качестве понимания материала студентами это не скажется.

Вас попросили составить список тем, которые профессор должен прочитать, таким образом, чтобы студенты все поняли, и суммарная полезность курса была максимальна.

Входные данные

Первая строка входного файла содержит одно число — N (1 ≤ N ≤ 200). Вторая строка содержит N целых чисел, не превосходящих по модулю 1 000 — полезности каждой темы. Далее следуют N строк с описанием зависимостей тем. Каждое описание начинается количеством тем, которые необходимо понять для понимания данной темы. Потом следуют номера этих тем, разделенные пробелами.

Выходные данные

Выведите единственное число — максимально возможную суммарную полезность прочитанного материала.

Примеры тестов

Входные данные
4
-1 1 -2 2
0
1 1
2 4 2
1 1
Выходные данные
2
Входные данные
3
2 -1 -2
2 2 3
0
0
Выходные данные
0