#include <cassert>
#include <cstdio>
#include <iostream>
#include <sstream>
#include <numeric>
#include <bitset>
#include <vector>
#include <set>
#include <string>
#include <map>
#include <cmath>
#include <algorithm>
#include <queue>
#include <cstdlib>
#include <functional>
#include <cstring>
#include <ctime>
#include <memory.h>

#define y1 AAA_BBB
#define y0 AAA_AAA

#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define forn(i, n) for(int i = 0; i < (int)(n); ++i)
#define ford(i, n) for(int i = (int)(n) - 1; i >= 0; --i)
#define fore(i, a, b) for(int i = (int)(a); i <= (int)(b); ++i)
#define for1(i, n) for(int i = 1; i <= (int)(n); ++i)
#define all(v) (v).begin(), (v).end()

using namespace std;

typedef long long i64;
typedef unsigned long long u64;
typedef long double ld;
typedef vector<int> vi;
typedef vector<i64> vi64;
typedef pair<int, int> pii;
typedef vector<pii> vpi;
typedef vector<vi> vvi;
typedef vector<vi64> vvi64;

template <class T> T inline sqr(T x) {
    return x * x;
}

const ld pi = 3.1415926535897932384626433832795;
const ld eps = 1e-8;

int main()
{
#ifdef HOME
    freopen("input.txt", "r", stdin);
#endif
    ios::sync_with_stdio(false);
    
    int n;
    cin >> n;
    vi to(n);
    vector<ld> p(n);
    forn (i, n) {
        cin >> to[i] >> p[i];
        p[i] /= 100.0;
        --to[i];
    }
    ld ans = 0;
    vector<int> used(n);
    forn (v, n)
        if (!used[v]) {
            vi cur;
            int z = v;
            while (!used[z]) {
                cur.pb(z);
                used[z] = true;
                z = to[z];
            }
            auto it = find(all(cur), z);
            if (it == cur.end()) continue;
            ld prob = 1.0;
            while (it != cur.end()) {
                int u = *it;
                prob *= p[u];
                it++;
            }
            ans += prob;
        }
    printf("%.2lf", (double)ans);
    return 0;
}