// 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;
}