[COCI2010-2011#4] DUGOVI

题目描述

在一个小镇上有 $n$ 位居民,每位居民都**恰好从其他一位**居民那里借了一些钱。 现在到了还债的时间。但问题是每个人都把自己的钱用完了;也就是说任何人都无力偿还债务。这样以来产生了很多冲突。 市长决定解决这个问题。他预想要给一部分居民一些钱,以便于他们用来还债。不过当一部分居民拿到了钱,一系列的连锁反应就开始了。 例如, $A$ 从市长那里得到了钱。$A$ 赶忙用这些钱偿还 $B$ 的债务。$B$ 也正好偿还 $C$ 的债务,以此类推。 其中,如果 $B$ 没有足够的钱来一次还清,那么他会把钱暂时留在自己手里等到钱够了;如果还完债后还有剩余, $B$ 也会自己留着。($B$ 的行为对于任意一个人适用) 另一个例子:如果两个镇上的居民**互欠**对方 $100$ 美元,那么市长只需要给其中一个人 $100$ 美元,这两个债务就都解决了。 你需要通过程序来计算出:市长至少要支出多少元给一部分居民才能平息一切债务?

输入输出格式

输入格式


输入一行一个整数 $n$,表示镇上居民的数量。 接下来的 $n$ 行,每行两个整数 $A_i,B_i$,表示第 $i$ 个人欠第 $A_i$ 个人 $B_i$ 美元。 居民从 $1\sim n$ 编号。

输出格式


输出一行一个整数,表示市长最少支出的金额。

输入输出样例

输入样例 #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

说明

#### 数据规模与约定 对于 $100\%$ 的数据,保证 $2\le n\le 2\times 10^5$,$1\le A_i\le n$ 且 $A_i\neq i$,$1\le B_i\le 10^4$。 #### 说明 **题目译自 [COCI2010-2011](https://hsin.hr/coci/archive/2010_2011/) [CONTEST #4](https://hsin.hr/coci/archive/2010_2011/contest4_tasks.pdf) *T5 DUGOVI***。