#include <iostream>
#include <algorithm>
#include <memory.h>
#include <cstring>
#include <sstream>
#include <cstdlib>
#include <complex>
#include <string>
#include <bitset>
#include <vector>
#include <cstdio>
#include <ctime>
#include <cmath>
#include <queue>
#include <stack>
#include <set>
#include <map>
 
using namespace std;
#define ll long long
double ans = 0;
const int N = 200000;
int f[N];
vector < pair < int, int > > g[N];
int pred[N];
int P[N];
void dfs(int x, int p) {
	f[x] = 1;
	for (int i = 0; i < g[x].size(); ++i) {
		int val = g[x][i].first;
		if (f[val] == 1) {
			double ret = 1.0 * g[x][i].second / 100;
			int cur = x;
			while (cur != val) {
				ret *= 1.0 * P[cur] / 100;
				cur = pred[cur];
			}
			ans += ret;
			continue;
		}
		if (f[val] == 0)  {
			pred[val] = x;
			P[val] = g[x][i].second;
			dfs(val, x);
		}
	}
	f[x] = 2;
}
int main() {
	//freopen("input.txt", "r", stdin);
	int n;
	scanf("%d", &n);
	for (int i = 0; i < n; ++i) {
		int w, p;
		scanf("%d%d", &w, &p);
		w--; 
		g[i].push_back(make_pair(w, p));
	}
	for (int i = 0; i < n; ++i) 
		f[i] = 0;
	ans = 0;
	for (int i = 0; i < n; ++i) {
		if (f[i] == 0) {
			dfs(i, -1);
		}
	}
	cout.precision(2);
	cout << fixed << ans << endl;
	return 0;		
}