datorii

Time limit: 0.16s Memory limit: 32MB Input: datorii.in Output: datorii.out

Într-un grup de prieteni nu este un lucru ieşit din comun, ca unii să primească bani împrumut de la alţii. Datoriile ce se formează astfel sunt rezolvate ulterior. De exemplu, dacă Gigel îi plăteşte o bere lui Ghiţă, data viitoare va plăti Ghiţă berea pentru amândoi şi datoriile vor fi rezolvate.
Dacă după un timp mai îndelungat împrumuturile nu se rezolvă de la sine, grupul de prieteni se adună pentru a rezolva problemele financiare. La o asemenea întâlnire este de dorit, ca numărul de tranzacţii efectuate să fie minim. De exemplu, dacă Gigel îi datorează lui Ghiţă 1010 RON, iar Ghiţă lui Daniel tot 1010 RON, este de ajuns ca Gigel să dea 1010 RON lui Daniel şi toate datoriile vor fi rezolvate.

Cerinţă

Cunoscând toate împrumuturile ce au fost făcute în grupul de prieteni, determinaţi o modalitate de rezolvare a datoriilor cu număr minim de tranzacţii. Dacă există mai multe posibilităţi cu număr minim de tranzacţii, determinaţi o modalitate pentru care suma totală de bani tranzacţionată să fie minimă. Dacă există mai multe posibilităţi cu număr minim de tranzacţii şi sumă totală de bani minimă, afişaţi oricare dintre acestea.

Date de intrare

Fişierul de intrare datorii.in va conţine pe prima linie două numere naturale separate prin spaţiu N MN \ M, reprezentând numărul prieteni din grup, respectiv numărul de împrumuturi făcute. Prietenii sunt numerotaţi de la 11 la NN. Următoarele MM linii vor conţine câte trei numere naturale separate prin spaţiu A B CA \ B \ C cu semnificaţia: "AA trebuie să plătească CC RON lui BB".

Date de ieșire

Fişierul de ieşire datorii.out va conţine pe prima linie două numere naturale separate prin spaţiu K SK \ S, unde KK reprezintă numărul minim de tranzacţii efectuate, iar SS suma totală minimă pentru KK tranzacţii. Pe următoarele KK linii se vor scrie câte trei numere naturale separate prin spaţiu X Y ZX \ Y \ Z cu semnificaţia: XX plăteşte ZZ RON lui YY.

Restricții și precizări

  • 2N202 \leq N \leq 20
  • 1M1001 \leq M \leq 100
  • 1C1001 \leq C \leq 100

Exemplu

datorii.in

6 5
1 2 10
2 3 10
4 5 5
5 6 5
6 4 5

datorii.out

1 10
1 3 10

Explicație

S-a efectuat o singură tranzacţie: persoana 11 a dat 1010 RON persoanei 33. Suma minimă tranzacţionată este 1010 RON.

Log in or sign up to be able to send submissions!