#include <cstdio>
#include <algorithm>
#include <vector>

using namespace std;

#define MP make_pair
#define A first
#define B second

int n;
int p[100013];
int visited[100013];
int find(int x) { return p[x]==x ? x : p[x]=find(p[x]); }
void merge(int a, int b) { p[find(a)] = find(b); }
vector<pair<int,int> > adj[100013];
vector<int> seed;

double dfs(int x, int s, double cur) {
    if (x==s) return cur;
    return dfs(adj[x][0].A,s,cur*adj[x][0].B/100);
}

int main() {
    scanf("%d",&n);
    for (int i=1;i<=n;i++) p[i] = i;
    for (int i=1;i<=n;i++) {
        int w,c;
        scanf("%d%d",&w,&c);
        adj[i].push_back(MP(w,c));
        if (find(i)==find(w)) seed.push_back(i);
        merge(i,w);
    }
    double ans = 0;
    for (int s: seed) ans+=dfs(adj[s][0].A,s,adj[s][0].B/100.);
    printf("%1.2f\n",ans);
    
    return 0;
}