// spnauT // #include <bits/stdc++.h> using namespace std; #define FOR(i,a,b) for(int _b=(b),i=(a); i<_b; ++i) #define ROF(i,b,a) for(int _a=(a),i=(b); i>_a; --i) #define REP(n) for(int _n=(n); --_n>=0;) #define _1 first #define _2 second #define PB(x) push_back(x) #define SZ(x) int((x).size()) #define ALL(x) (x).begin(), (x).end() #define MSET(m,v) memset(m,v,sizeof(m)) #define MAX_PQ(T) priority_queue <T> #define MIN_PQ(T) priority_queue <T,vector<T>,greater<T>> #define IO() {ios_base::sync_with_stdio(0); cin.tie(0);} #define nl '\n' #define cint1(a) int a; cin>>a #define cint2(a,b) int a,b; cin>>a>>b #define cint3(a,b,c) int a,b,c; cin>>a>>b>>c typedef long long LL; typedef pair<int,int> PII; typedef vector<int> VI; typedef vector<LL> VL; typedef vector<PII> VP; template<class A, class B> inline bool mina(A &x, B y) {return(y<x)?(x=y,1):0;} template<class A, class B> inline bool maxa(A &x, B y) {return(x<y)?(x=y,1):0;} template<class A, class B> inline A geta(A &x, const B y) {A t=x;x=y;return t;} #define MAXN (100005) int N; int A[MAXN]; int P[MAXN]; int V[MAXN]; int main() { IO(); cin >> N; FOR(i,0,N) { cint2(a,p); A[i] = a - 1; P[i] = p; } double sol = 0; FOR(i,0,N) if(!V[i]) { int a = i; while(!V[a]) { V[a] = 1; a = A[a]; } if(V[a] == 1) { int b = a; double p = 1; do { p *= P[b]/100.; b = A[b]; } while(b != a); sol += p; } a = i; while(V[a] == 1) { V[a] = 2; a = A[a]; } } cout << fixed << setprecision(2) << sol << nl; return 0; }