În cartierul Ferentari, persoane și-au împrumutat bani între ele de-a lungul timpului. Aceste datorii sunt reprezentate sub forma a tranzacții de tipul: Persoana trebuie să îi dea persoanei suma de 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 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 (numărul de persoane) și (numărul de tranzacții). Următoarele linii conțin câte trei numere , cu semnificația că persoana îi datorează persoanei suma .
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
- Sumele finale de plată/încasare nu depășesc
- Persoanele sunt numerotate de la la .
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