A1205 | [COCI-2010_2011-contest4]#3 DUGOVI
来源COCI
时间限制1s
内存限制128MB
通过 / 提交0/0
题目描述
In a little town called Križ live N 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 A gets money from the city. Person A uses that money to pay the debt toward person B. Person B then uses that money to pay the debt towards person C etc. If person B didn’t have enough money to pay back the debt, they wait until they get enough. If they have more than enough money, person B will keep what is left after payback.
Another example: if two people live in Križ, and they owe $100 to each other, the town will give $100 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 payed.
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 A gets money from the city. Person A uses that money to pay the debt toward person B. Person B then uses that money to pay the debt towards person C etc. If person B didn’t have enough money to pay back the debt, they wait until they get enough. If they have more than enough money, person B will keep what is left after payback.
Another example: if two people live in Križ, and they owe $100 to each other, the town will give $100 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 payed.
输入格式
First line of input contains one integer N (2 ≤ N ≤ 200 000), number of inhabitants of Križ. They are numbered from 1 to N.
The following N lines contain two integers, separated by space. In i-th of those lines, first number - Ai represents the id of the person i-th person owes money to (1 ≤ Ai ≤ N, Ai ≠ i), and second Bi represents the ammount of the debt in $ (1 ≤ Bi ≤ 10 000).
The following N lines contain two integers, separated by space. In i-th of those lines, first number - Ai represents the id of the person i-th person owes money to (1 ≤ Ai ≤ N, Ai ≠ i), and second Bi represents the ammount of the debt in $ (1 ≤ Bi ≤ 10 000).
输出格式
First and only line of output should contain one integer - the minimum total ammount of money town has to give to its inhabitants so all debts are returned.
输入输出样例
输入 #1
4 2 100 1 100 4 70 3 70
输出 #1
170
输入 #2
3 2 120 3 50 2 80
输出 #2
150
输入 #3
5 3 30 3 20 4 100 5 40 3 60
输出 #3
110
暂无题解
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?
提交通过
评测结果:Accepted