COCI '10 Contest 4 #5 Dugovi
View as PDFIn a little town called Križ live  people. Each of them has borrowed some money from exactly one other inhabitant. Now the time has come to pay back all the debts, but the problem is that everybody has spent all of their money!
The major of Križ has decided to solve this problem. The town will give money to a few people so that they can pay back their debts. When some people get their money back, a chain reaction is started - for example: person  gets money from the city. Person 
 uses that money to pay the debt toward person 
. Person 
 then uses that money to pay the debt towards person 
 etc. If person 
 didn't have enough money to pay back the debt, they wait until they get enough. If they have more than enough money, person 
 will keep what is left after payback.
Another example: if two people live in Križ, and they owe  to each other, the town will give 
 to one of them so they can pay back the debt to the other one.
Your task is to calculate the minimum total amount of money the town has to give to some subset of the inhabitants so that after the payback protocol described above all debts are paid.
Input Specification
First line of input contains one integer  
, number of inhabitants of Križ. They are numbered from 
 to 
.
The following  lines contain two integers, separated by space. In 
 of those lines, first number - 
 represents the id of the person 
 person owes money to 
, and second 
 represents the amount of the debt in 
 
.
Output Specification
First and only line of output should contain one integer - the minimum total amount of money the town has to give to its inhabitants so all debts are paid.
Sample Input 1
4
2 100
1 100
4 70
3 70
Sample Output 1
170
Sample Input 2
3
2 120
3 50
2 80
Sample Output 2
150
Sample Input 3
5
3 30
3 20
4 100
5 40
3 60
Sample Output 3
110
Comments