ferentari

Time limit: 0.1s Memory limit: 16MB Input: ferentari.in Output: ferentari.out

În cartierul Ferentari, NN persoane și-au împrumutat bani între ele de-a lungul timpului. Aceste datorii sunt reprezentate sub forma a MM tranzacții de tipul: Persoana XX trebuie să îi dea persoanei YY suma de ZZ euro.

Nuțu, „administratorul” cartierului, s-a plictisit de atâtea drumuri făcute între blocuri pentru a colecta banii și vrea să simplifice totul. El știe că dacă Ion îi dă lui Vasile 50€ și Vasile îi dă lui Gheorghe 50€, e mult mai eficient ca Ion să îi dea direct lui Gheorghe acei 50€.

Nuțu vrea să găsească numărul minim de tranzacții directe necesare pentru ca, la final, fiecare persoană să aibă aceeași situație financiară netă (balanță) ca în situația inițială.

Cerință

Cunoscând cele MM tranzacții inițiale, determinați numărul minim de transferuri de bani necesare pentru a stinge toate datoriile.

Date de intrare

Fișierul ferentari.in conține pe prima linie numerele NN (numărul de persoane) și MM (numărul de tranzacții). Următoarele MM linii conțin câte trei numere X,Y,ZX, Y, Z, cu semnificația că persoana XX îi datorează persoanei YY suma ZZ.

Date de ieșire

Fișierul ferentari.out va conține un singur număr reprezentând numărul minim de tranzacții.

Restricții și precizări

  • 2N202 \le N \le 20
  • 1M1051 \le M \le 10^5
  • 1Z1061 \le Z \le 10^6
  • Sumele finale de plată/încasare nu depășesc 21092 \cdot 10^9
  • Persoanele sunt numerotate de la 00 la N1N-1.

Exemplu

ferentari.in

3 2
0 1 100
1 2 100

ferentari.out

1

Explicatie

În loc de două tranzacții, persoana 0 îi dă direct 100€ persoanei 2

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