import sys #sys.setrecursionlimit(n) import heapq import re import bisect import random import math import itertools from collections import defaultdict, deque from copy import deepcopy n = int(input()) e = deque([[int(i) for i in input().split()] for i in range(n)]) e.appendleft([0,0]) v = [False] * (n + 1) d = [False] * (n + 1) def dfs(i, j): if d[e[i][1]]: return -1 if i == j: return j if v[e[i][1]]: return -1 v[i] = True ret = dfs(e[i][1], j) if ret == -1: return -1 if e[i][0] < e[ret][0]: return i return ret ans = 0 for i in range(1, n + 1): if d[i]: continue v = [False] * (n + 1) ret = dfs(e[i][1], i) if ret >= 0: ans += e[ret][0] d[ret] = True for _ in range(1, n + 1): for i in range(1, n + 1): if d[e[i][1]] and not(d[i]): ans += e[i][0] / 2 d[i] = True print(ans)