#include <cstdlib>
#include <cctype>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <string>
#include <iostream>
#include <sstream>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <fstream>
#include <numeric>
#include <iomanip>
#include <bitset>
#include <list>
#include <stdexcept>
#include <functional>
#include <utility>
#include <ctime>
using namespace std;

typedef long long LL;
#define rep(it,s) for(__typeof((s).begin()) it=(s).begin();it!=(s).end();it++)

int n;
int nex[100010];
int p[100010];
int vis[100010], dep[100010];
double res = 0;

void dfs(int u, int pre) {

    vis[u] = 1;
    if (pre==-1)
        dep[u] = 1;
    else
        dep[u] = dep[pre] + 1;

    if (vis[nex[u]]==1) {

        double tmp = 1;

        int q = u;

        while (nex[q]!=u) {

            tmp *= p[q] / 100.0;
            q = nex[q];
        }

        tmp *= p[q] / 100.0;

        res += tmp;

    }
    else if (vis[nex[u]]==0) {
        dfs(nex[u], u);
    }

    vis[u] = 2;

}

int main() {

    //freopen("input.txt","r",stdin);
    //freopen("output.txt","w",stdout);

    cin>>n;
    for (int i=0; i<n; i++) {
        scanf("%d%d", nex+i, p+i);
        nex[i]--;
    }

    for (int i=0; i<n; i++) if (!vis[i]) {
        dfs(i, -1);
    }

    int ans = int(round(res*100)+0.1);

    if (ans%100<10)
        printf("%d.0%d", ans/100, ans%100);
    else
        printf("%d.%d", ans/100, ans%100);

    return 0;

}