N=int(raw_input()) outdeg = [0 for i in range(N+1)] rev = [[] for i in range(N+1)] LS=[(0,0) for i in range(N+1)] for i in range(N): L,S=map(int,raw_input().split()) LS[i+1]=(L,S) outdeg[S] += 1 num = 0 ans = 0.0 while num < N: ok = False m = 1000 mi = -1 for i in range(1,N+1): if outdeg[i] == 0: #print i,"half",LS[i][0] ans += LS[i][0]/2.0 outdeg[i] = -1 ok=True num+=1 outdeg[LS[i][1]]-=1 if outdeg[i] > 0: m = min(LS[i][0],m) if m == LS[i][0]: mi = i if ok == False: num+=1 #print mi,"full",LS[mi][0] ans += LS[mi][0] outdeg[mi]=-1 outdeg[LS[mi][1]]-=1 print ans