Codeforces Global Round 6 |
---|
Закончено |
Рассмотрим компанию из $$$n$$$ людей, пронумерованных от $$$1$$$ до $$$n$$$. Они используют бурли, чтобы платить за товары и услуги. Иногда человеку не хватает денег на какую-либо покупку, тогда он занимает деньги у другого человека с намерением потом отдать их с процентами. Мы обозначим за $$$d(a,b)$$$ сумму, которую $$$a$$$ должен отдать $$$b$$$, или $$$0$$$, если долга нет.
Иногда система долгов может усложняться — например, в ситуации, когда один человек дал на время денег другому, но первому самому не хватает денег на покупку, а второй еще не отдал долг. Тогда первому человеку придется занимать у кого-то ещё.
Если процесс одалживания денег длится достаточно долго, система долгов может стать очень сложной и потребовать упрощения. Упрощать систему можно при помощи двух операций:
Суммарный долг определяется следующей величиной:
$$$$$$\Sigma_d = \sum_{a,b} d(a,b)$$$$$$
Вы можете использовать ранее описанные операции в любом порядке. Ваша цель — минимизировать суммарный долг. Обратите внимание, что не обязательно минимизировать количество ненулевых долгов, только суммарный долг должен стать как можно меньше.
В первой строке заданы два целых числа $$$n$$$ ($$$1 \leq n \leq 10^5$$$) и $$$m$$$ ($$$0 \leq m \leq 3\cdot 10^5$$$) — количество людей и долгов, соответственно.
Далее следуют $$$m$$$ строк, каждая из которых содержит три целых числа $$$u_i$$$, $$$v_i$$$ ($$$1 \leq u_i, v_i \leq n, u_i \neq v_i$$$), $$$d_i$$$ ($$$1 \leq d_i \leq 10^9$$$), обозначающих, что человек $$$u_i$$$ должен $$$d_i$$$ бурлей человеку $$$v_i$$$.
В первой строке выведите число $$$m'$$$ ($$$0 \leq m' \leq 3\cdot 10^5$$$) — количество долгов после уменьшения системы долгов. Можно показать, что всегда существует способ упростить систему до минимального суммарного долга с соблюдением этого условия.
Далее выведите $$$m'$$$ строк, $$$i$$$-я из которых содержит три целых числа $$$u_i, v_i, d_i$$$, обозначающих, что человек $$$u_i$$$ должен отдать человеку $$$v_i$$$ ровно $$$d_i$$$ бурлей. На эти числа накладываются следующие ограничения: $$$1 \leq u_i, v_i \leq n$$$, $$$u_i \neq v_i$$$ и $$$0 < d_i \leq 10^{18}$$$.
Для каждой пары $$$i \neq j$$$ должно соблюдаться условие $$$u_i \neq u_j$$$ или условие $$$v_i \neq v_j$$$. Иными словами, каждая пара людей должна встречаться в выходных данных только один раз.
3 2
1 2 10
2 3 5
2
1 2 5
1 3 5
3 3
1 2 10
2 3 15
3 1 10
1
2 3 5
4 2
1 2 12
3 4 8
2
1 2 12
3 4 8
3 4
2 3 1
2 3 2
2 3 4
2 3 8
1
2 3 15
В первом примере одна из оптимальных последовательностей операций — следующая:
Во втором примере одна из оптимальных последовательностей операций — следующая:
Название |
---|